一、spring簡化Java開發
爲了降低Java開發的複雜性,spring框架採取了四種關鍵策略
(1)基於POJO的輕量級和最小侵入性編程
注:spring竭力避免因自身的API而弄亂你的應用代碼。spring不會強迫你實現spring規範的接口或繼承spring規範的類,相反,在基於spring構建的應用中,它的類通常沒有任何痕跡表明你使用了spring。最壞的場景是,一個類或許會使用spring註解,但它依舊是POJO。
(2)通過依賴注入和麪向接口實現松耦合
注:依賴注入(Dependency Injection,DI)通過DI,對象的依賴關係將由系統中負責協調各對象的第三方組件在創建對象的時候進行設定。對象無需自行創建或管理它們的依賴關係,依賴關係被自動注入到需要他們的對象中去。兩種配置方式,一種是基於XML的配置,一種是基於Java的配置。
(3)基於切面和慣例進行聲明式編程
注:面向切面(aspect-oriented programming AOP)AOP能夠使諸如日誌模塊、安全模塊、事物模塊這些服務模塊化,並以聲明的方式將它們用到需要它們影響的組件中去。所造成的結果就是這些組件會具有更高的內聚性並且會更加關注自身的業務,完全不需要了解涉及系統服務所帶來的複雜性。總之,AOP能確保POJO的簡單性。
(4)通過切面和模板減少樣板式代碼
注:spring中封裝了一些實現功能的Java API的實現,比如:spring中的JdbcTemplate就是對JDBC訪問數據庫的封裝。
二、spring容器
容器是spring的核心。spring容器使用DI管理構成應用的組件,它會創建相互協作的組件之間的關聯。spring容器並不是只有一個,spring自帶了多個容器的實現,可以歸納爲兩種不同的類型:
(1)bean工廠
(由org.springframework.beans.factory.BeanFactory 接口定義)是最簡單的容器,提供基本的DI支持。
(2)應用上下文
(由org.springframework.context.ApplicationContext 接口定義)基於BeanFactory構建,並提供應用框架級的服務。
注:spring提供了多種類型的應用上下文,比如:
1)AnnotationConfigApplicationContext:從一個或多個基於Java的配置類中加載spring應用上下文
-
AnnotationConfigWebApplicationContext:從一個或多個基於Java的配置類中加載spring web應用上下文
-
ClassPathXmlApplicationContext:從類路徑下的一個或多個XML配置文件中加載上下文定義,把應用上下文的類資源當做是類資源
-
FileSystemXmlApplicationContext:從系統文件下的一個或多個XML配置文件中加載上下文定義
-
XMLWebApplicationContext:從web應用下的一個或多個XML配置文件中加載上下文定義
三、bean的生命週期
具體的文字說明: