Spring框架是一個爲Java應用程序的開發提供了綜合、普遍的基礎性支持的Java平臺。java
Spring是一個十分龐大的體系,具體能夠訪問它的官網https://spring.io/projects進行詳細瞭解。web
Spring體系裏的經常使用到的項目:spring
Spring實現了工廠模式的工廠類,這個類名爲BeanFactory(接口),在程序中一般用他的子接口ApplicationContext。數據庫
BeanFactory是Spring容器的根接口,ApplicationContext是它的子接口,一般用它的子接口ApplicationContext來訪問Spring容器。編程
ApplicationContext子接口經常使用的有四個實現類:設計模式
Spring至關於一個大的工廠類,在其配置文件中經過<bean>元素配置用於建立實例對象的類名和實例對象的屬性。框架
工廠模式是一種生產對象型的設計模式,有了工廠模式後,當須要某個類的對象時,就再也不須要new指定的類,而是調用工廠中的方法便可。也就不須要
關心對象的建立過程。甚至有時候也許你須要的對象只要是某種大分類的類型就能夠了,而沒必要是某個指定的類型。不會過渡依賴某個類,這些類都是
易於被替換的,以提升整個項目的可維護性。工具
組成 Spring 框架的每一個模塊均可以單獨存在,或者與其餘一個或多個模塊聯合實現。每一個模塊的功能以下:編碼
spring有兩個核心思想 (IOC (控制反轉) , AOP(面向切面編程))spa
IOC (控制反轉) : 控制反轉就是一種思想 , 這個思想是怎麼想的呢 , 就是將對象控制權的轉移,從程序代碼自己反轉到了外部容器 。就是想把實體類 的生命週期交給spring去控制 , 讓spring實現建立 ,實現初始化 , 實現銷燬 . 這樣就能夠大大的免去在編寫代碼的過程當中new一個對象 , 衆所周知new 對象 是java代碼編寫裏耦合性最大的一個事情 。
有反轉就會有正轉,正轉就是應用程序用到了什麼對象會直接在應用程序中進行建立,本身手動new出來。
也說了IOC是一種思想 ,那麼怎麼把這種思想實現呢 ,現在比較流行的的方法是依賴注入 DI(Dependency Injection)
DI(依賴注入):是指程序運行過程當中,若須要調用另外一個對象協助時,無須在代碼中建立被調用者,而是依賴於外部容器,由外部容器建立後傳遞給程序。依賴注入是目前最優秀的解耦方式。依賴注入讓Spring的Bean之間以配置文件的方式組織在一塊兒,而不是以硬編碼的方式耦合在一塊兒的。
二者的關係就是ioc是一種思想 ,而DI確實一種實現方式 ,這裏介紹了IOC,那麼下面再來講下spring的另一個核心思想AOP
AOP(面向切面編程) : 面向切面編程是對OOP(面向對象編程)的完善和補充 。
面向切面是面向對象中的一種方式而已。在代碼執行過程當中,動態嵌入其餘代碼,叫作面向切面編程。
AOP採用一種稱爲「橫切」的技術,將涉及多業務流程的通用功能抽取並單獨封裝,造成獨立的切面,在合適的時機將這些切面橫向切入到業務流程指定的位置中。
常見的使用場景有日誌 ,事物管理以及數據庫操做