Spring是一個java應用最廣的開源框架,它是於2003 年興起的一個輕量級的Java 開發框架,由Rod Johnson 在其著做Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是爲了解決企業應用開發的複雜性而建立的。框架的主要優點之一就是其分層架構,分層架構容許使用者選擇使用哪個組件,同時爲 J2EE 應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成之前只可能由EJB完成的事情。然而,Spring的用途不只限於服務器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用均可以從Spring中受益。它的成功,來源於理念,而不是技術自己。它的理念包括IOC(Inversion Of Control,控制反轉)和AOP(Aspect Oriented Programming,面向切面編程)。簡單來講,Spring是一個分層的JavaSE/EE full-stack(一站式) 輕量級開源框架。java
• Spring就是一個大工廠(容器),能夠將全部對象建立和依賴關係維護,交給Spring管理
• spring工廠是用於生成beanspring
• Spring提供面向切面編程,能夠方便的實現對程序進行權限攔截、運行監控等功能編程
• 只須要經過配置就能夠完成對事務的管理,而無需手動編程api
• Spring對Junit4支持,能夠經過註解方便的測試Spring程序服務器
• Spring不排斥各類優秀的開源框架,其內部提供了對各類優秀框架的直接支持架構
• Spring 對JavaEE開發中很是難用的一些API(JDBC、JavaMail、遠程調用等),都提供了封裝,使這些API應用難度大大下降框架
IoC是一個容器,在Spring中,他會認爲一切java資源都是java bean,容器的目標就是管理這些Bean和他們之間的關係。所以,Spring IOC裏面裝載的各類Bean,也能夠理解爲java的各類資源,包括Java bean的建立、事件、行爲等。除此以外,容器還會管理javaBean的各類依賴關係,好比老師和學生的教育與被教育的依賴關係。只是SpringIOC管理對象和其依賴關係,採用的不是認爲的主動建立,而是Spring IoC本身經過描述建立的。也就是說,Spring是依靠描述來完成對象的建立及其依賴關係的。socket
好比如今有一個接口Socket,其實現類爲Socket1。須要使用的話,代碼以下:學習
Socket socket = new Socket1(); user.setSocket(socket); user.useSocket();
假如項目比較大,有多處使用。有一天須要從新實現該接口,則須要修改大量的代碼。
若是咱們使用配置的方式呢:測試
<bean id="socket" class="XXX.Socket1"> <bean id="user" class="XXX.User"> <property name="socket" ref="socket"/> </bean>
若是有更好的實現,則只須要修改
<bean id="socket" class="XXX.Socket2">
java bean是面向對象(OOP)的基礎實際,但有些狀況是面向對象沒法處理的。
好比:
請假審批須要組長,經理,老闆的審批。在走到經理這裏,不一樣意,則整個審批應該是不經過的。這時候就須要把以前的審批做廢掉。
再好比:
轉帳:A轉給B1000元。如今A減小1000元,可是B增長1000元時發生了異常,這時候須要A減小1000元的操做也須要撤回才行。
這些整個操做至關於一個切面。咱們的目標是達標這些操做的一致性。
這些能夠用Spring AOP來解決。
private void transfer(int money){ try{ user1.reduce(money); user2.reduce(money); commit(); }catch(Exception e){ log.err(...); rollback(); } }
Spring AOP會自動將這個過程實現,咱們只須要關注業務代碼便可。
固然,實際遇到的問題要比這複雜得多,咱們須要慢慢來學習,深刻,去解決遇到的其餘問題。
你們有興趣也能夠關注個人公衆號查看文章。
------莫道君行早,更有早行人------