Spring IOC模組的簡單介紹
首先,本人正在學習spring,這是一點心得體會,所以本文中會有不足、錯誤之處,歡迎各位大佬進行指點。
其次對於框架而言,知道反射是很重要,所以建議在學會反射了後在去看看框架。
Spring:是企業級java生態應用中的一個開源、輕量級的軟體開發框架(半成品)
作用:主要就是通過軟體開發中的共性進行封裝、抽象、組合等方式來簡化軟體開發過程,降低運營成本和開發週期
總結:就是用於資源整合,方便開發減少開發量。框架就是一個工具,用來方便開發的工具。
那麼,我們現在介紹的spring底層執行的一些機制,所以在介紹上比較複雜,那麼在整個講解過程反可能會產生spring這麼麻煩的感覺,首先在這裡進行一些解釋。
Spring中的核心模組:
1) IOC 模組(控制反轉容器):物件建立,物件儲存,物件依賴管理。
2) DATA 模組(整合JDBC,MyBatis,JPA,....)
3) MVC 模組(重點解決與表示層通訊問題)
4) AOP 模組(重點解決物件功能擴充套件問題)
5).............
IOC模組,
介紹:Spring中有一個核心的容器,這個容器通常稱之為IOC容器,那麼這個容器的核心思想是控制反轉思想的實現。
它可以負責物件的建立,物件的儲存(map),物件的管理(依賴查詢,依賴注入)。
在框架中的地位:
建立過程:在eclipse中建立一個maven專案,新增spring依賴和xml的配置檔案,然後編寫一個類,在編寫一個單元測試類,用於建立物件
問題:
1)如何將HelloService物件交給Spring管理?
2)Spring如何構建此類的物件?
3)Spring如何儲存此物件?
其中最為關鍵的是spring-configs.xml檔案中的Bean標籤
Spring中可以通過bean標籤描述由它管理的物件
1)id屬性的值為bean物件的唯一標識
2)class屬性的值為類全名(包名+類名)
比如:<bean id="hello"
如何測試?
1.初始化Spring框架的IOC物件,解析XML檔案,儲存配置資訊
比如:ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring-configs.xml");
2.獲取Bean物件,內容包含了:何時建立、如何建立、從哪裡獲取物件
比如:Hello hello = ctx.getBean("hello",Hello.class);
3.應用Bean物件
比如:hello.sayHello();
4.釋放資源
比如:ctx.close();
在整個Spring框架中Bean物件是核心,那麼接下來我們來談談Bean物件的基本配置
Bean物件:在軟體應用中只要是被Spring管理的所以物件都是屬於Bean物件
Bean的構建方式有來兩種:1.直接通過構造方法 2.通過工廠物件的例項方法
1.通過構造方法、靜態方法、例項及例項方法進行構造物件 注意:在構造方法的時候都會用到反射機制
2.工廠物件:(1)通過FactoryBean的getObject方法建立類的例項,定義一個工廠物件,此型別的交給FactoryBean建立例項
(2)定義一個Bean工廠ObjectFactoryBean(要實現FactoryBean介面),此工廠要建立ObjectFactory型別物件,然後將此物件交給Spring管理。
具體的程式碼就是不寫了,大家可以在網上搜索 Spring IOC建立Bean物件的方法 會有很多的方法和例子,大家可以自己去嘗試做一下
Bean的作用域
1) singleton (這個作用域標識的物件具備全域性唯一性):系統預設
2) prototype(這個作用域標識的物件每次獲取都會建立新的物件)
那麼Bean物件其實大家應該知道很重要了,那麼接下來我就像談談關於Bean物件的生命週期
Bean物件是有生命週期的,它的生命週期包括了:建立、初始化、服務、銷燬整個執行的過程,那麼我們可以通過Init-method,destory-method屬性指定bean的生命週期方法
比如:
注意:關於Bean物件的銷燬是否由Spring是取決於Bean的的作用域:
1) singleton作用域的物件可以在容器關閉時銷燬(會呼叫物件的銷燬資源的方法)
2) prototype作用域的物件可以由容器建立物件,初始化物件,但不負責銷燬.
這就是在學習了Spring IOC的一點點心得,說得很淺,不是很深,有錯誤的地方還望各位大佬指導下!