1. 程式人生 > >Spring IOC模組的簡單介紹

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