1配置元數據
Bean是被實例化的、被組裝起來的、被IOC容器管理的類實例(一條Bean配置元數據可以產生多個類實例)。創建這些Bean需要的一些配置參數,叫做配置元數據,配置元數據肯定是我們自己寫的,之前的提到的提供配置元數據的方法有xml和java類,還有一個就是component註解(一些老教程都沒提……搞得我一直以爲大家還都在用xml配置元數據……)。配置元數據要包含的具體的參數如下:
- class:這個的值必須有,且指向一個具體存在的java類,bean就是這個java類的實例
- name:bean的唯一標識,且不能以大寫字母開頭,和前端裏的標籤的id/name一樣
- constructor-arg :它是用來注入依賴關係的,其實就是構造方法的入參
- properties:它是用來注入依賴關係的,對了類的屬性進行賦值,可以是賦值基本數據類型,也可以是賦值一個類實例(在spring中,就是一個由IOC容器控制的bean了)
- autowiring mode:它是用來注入依賴關係的,暫時不太瞭解
- lazy-initialization mode:延遲初始化的bean,告訴 IOC容器在它第一次被請求時,而不是在啓動時去創建一個 bean 實例。debug運行spring demo,發現,不顯式配置就默認爲,第一次使用bean時創建這個bean,即lazy-initialization=“true”
- initialization 方法:在 bean 的所有必需的屬性被容器設置之後,可以簡單理解爲構造函數之後的,自動執行的方法。
destruction 方法:當包含該 bean 的容器被銷燬時,使用該方法,應該是做一些資源釋放之類的。
2bean和spring容器的關係
下圖是bean和spring的簡單關係,也能看出bean的生成過程。
來看一下xml提供的配置元數據實例,配置文件中有不同的 bean 定義,包括延遲初始化,初始化方法和銷燬方法的:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- A simple bean definition -->
<bean id="..." class="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- A bean definition with lazy init set on -->
<bean id="..." class="..." lazy-init="true">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- A bean definition with initialization method -->
<bean id="..." class="..." init-method="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- A bean definition with destruction method -->
<bean id="..." class="..." destroy-method="...">
<!-- collaborators and configuration for this bean go here -->
</bean>
<!-- more bean definitions go here -->
</beans>