更新時(shí)間:2019-08-10 09:00:00 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2900次
毫無(wú)疑問(wèn),Spring框架是最流行的Java框架之一,通過(guò)提供依賴注入和控制反轉(zhuǎn)等特性,可以輕松創(chuàng)建企業(yè)級(jí)Java應(yīng)用程序。
但是,老實(shí)說(shuō),Spring不僅僅是另一個(gè)DI和IOC框架。通過(guò)提供一個(gè)有用的抽象層,它進(jìn)一步簡(jiǎn)化了許多Java的api,例如JDBC、JMS、JavaMail等等。它們消除了Java開(kāi)發(fā)人員在執(zhí)行SQL語(yǔ)句和處理結(jié)果集以獲得他們想要的Java對(duì)象時(shí)所面臨的大部分困難。
因此,當(dāng)您學(xué)習(xí)Spring時(shí),不僅要學(xué)習(xí)如何使用它,還要學(xué)習(xí)如何用Java和面向?qū)ο蠓绞骄帉懜玫拇a。
在這篇文章中,小編將分享學(xué)習(xí)Spring過(guò)程中發(fā)現(xiàn)的一些最佳實(shí)踐,主要是通過(guò)閱讀CraigWalls的經(jīng)典動(dòng)作書籍《SpringInAction》和在使用Spring過(guò)程中的體驗(yàn)。
CodingforInterfaces面向接口的編程
這是我第一次讀HeadfirstDesignPatterns時(shí)學(xué)到的一個(gè)老的OOP指導(dǎo)原則。這個(gè)OOP設(shè)計(jì)原則的主要目的是減少兩個(gè)類之間的耦合,從而增加靈活性。
Spring嚴(yán)格遵循這個(gè)面向?qū)ο蟮闹笇?dǎo)方針,并且經(jīng)常公開(kāi)一個(gè)接口來(lái)使用關(guān)鍵類,例如創(chuàng)建JdbcOperation接口來(lái)利用JdbcTemplate。這種做法可以讓不同層之間松散耦合。
另一個(gè)很好的例子是緩存接口,它用于提供緩存。所有其他的緩存實(shí)現(xiàn),例如EhCache、ConcurrentMapCache和NoOpCache等,都實(shí)現(xiàn)了這個(gè)接口。
如果您的代碼依賴于緩存接口而不依賴于任何特定的實(shí)現(xiàn),那么您可以切換緩存提供者而不會(huì)影響代碼的其他部分。
下面是使用集合框架為Java中的接口編寫代碼的簡(jiǎn)單示例。如果您仔細(xì)觀察,在這個(gè)示例中,我使用了接口而不是實(shí)現(xiàn)來(lái)聲明Java中的變量、參數(shù)和返回方法類型。
這種編碼風(fēng)格是靈活的,在將來(lái)更容易進(jìn)行擴(kuò)展。
偏愛(ài)unchecked的異常勝過(guò)checked異常
如果您已經(jīng)使用了Spring框架,那么您就會(huì)注意到Spring更傾向于不檢查的異常,而不是檢查過(guò)的異常,最好的例子就是SpringJDBC。
Spring有豐富的異常層次結(jié)構(gòu)來(lái)描述連接和從數(shù)據(jù)庫(kù)檢索數(shù)據(jù)時(shí)可以獲得的不同錯(cuò)誤,但是它們的根是DataAccessException,這是未檢查的。
Spring認(rèn)為,大多數(shù)錯(cuò)誤都源于在catch塊中無(wú)法糾正的原因,因此它將捕獲異常的決定留給開(kāi)發(fā)人員,而不是像Java那樣強(qiáng)制他們進(jìn)入異常。其結(jié)果是更簡(jiǎn)潔的代碼,沒(méi)有空的catch塊——以及更少的try-catch塊。
在處理Java中的錯(cuò)誤和異常時(shí),這也是最佳實(shí)踐之一。
使用模板方法設(shè)計(jì)模式
Spring大量使用模板方法設(shè)計(jì)模式來(lái)簡(jiǎn)化事情。這方面的一個(gè)很好的例子是JdbcTemplate,它在使用JDBCAPI時(shí)省去了很多麻煩。您只需要定義它需要什么,Spring就會(huì)處理流程的其余部分。
如果您不知道,模板模式定義了一個(gè)流程或算法,在這個(gè)過(guò)程或算法中,您無(wú)法更改流程,但同時(shí),您可以根據(jù)需要定制步驟。
例如,在處理JDBC時(shí),可以使用JdbcTemplate來(lái)執(zhí)行查詢并獲取所需的對(duì)象。您只需要提供SQL,它在每種情況下都是不同的,以及映射邏輯將一行從一個(gè)表映射到一個(gè)對(duì)象。
這里有一個(gè)很好的圖表,很好地解釋了模板模式。您可以看到,每個(gè)人都有一些共同的任務(wù),但是他們做不同的工作,模板方法很好地捕捉到了這一點(diǎn)。他們所需要做的就是定義他們的工作,他們可以通過(guò)定義work()抽象方法來(lái)定義他們的工作。
除了JdbcTemplate之外,您還可以在Spring框架的API中找到許多模板方法模式的其他示例,例如JmsTemplate和RestTemplate,它們?cè)试S您使用Java應(yīng)用程序中的RESTAPI。
這就是您可以從Spring中學(xué)到的一些Java最佳實(shí)踐。Spring是一個(gè)很棒的框架,其作者是經(jīng)驗(yàn)豐富的Java開(kāi)發(fā)人員。通過(guò)使用Spring以及查看它們的代碼、所做的決策以及它們?nèi)绾卧O(shè)計(jì)api,您可以學(xué)到很多東西。Spring是開(kāi)源的,這意味著您可以下載并查看它們的源代碼。
我知道Spring是許多這樣的最佳實(shí)踐的集合,有很多東西需要學(xué)習(xí),但是我發(fā)現(xiàn)這三種方法在Spring中隨處可見(jiàn),這對(duì)Spring框架的代碼質(zhì)量產(chǎn)生了巨大的影響。
以上是小編為大家總結(jié)的內(nèi)容,如果在閱讀中遇到問(wèn)題,可以咨詢動(dòng)力節(jié)點(diǎn)IT培訓(xùn)官網(wǎng)的在線客服老師。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743