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"  class="beans.Hello"></bean>

 如何測試?

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的一點點心得,說得很淺,不是很深,有錯誤的地方還望各位大佬指導下!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM