spring在初始化上行文的時候會初始化全部的bean。java
也就是在執行
new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"});
的時候會運行全部bean的構造方法初始化bean類。web
此後再也不進行注入操做,所以代碼中手動初始化的類不會進行注入。spring
用上下文(context)的getBean
方法獲取到的類是初始化上下文時注入好的bean類。session
被繼承的父類初始化時也不會進行注入,由於這至關於手動調用了父類的構造方法。svg
只有從上下文環境中獲取的bean類纔是注入好的。spa
用<constructor-arg>
子標籤傳遞構造參數;prototype
用factory-method
屬性調用靜態方法獲取實例;code
用scope
屬性指定spring容器初始化bean的方式,如:xml
scope="singleton"
:一個spring容器只實例化一個bean,每次調用的bean都是同一個實例,此爲默認。繼承
scope="prototype"
:每次調用spring都會初始化一個單獨的實例出來。
此外scope取值還能夠爲request
、session
、global-session
;
用init-method
屬性指定在初始化bean後當即調用的方法;
用destroy-method
屬性指定在銷燬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.xsd"> <bean id="accountDao" class="org.springframework.samples.dao.JpaAccountDao"> <constructor-arg ref="dog1" /> <constructor-arg value="10" /> </bean> <bean id="itemDao" class="org.springframework.samples.dao.JpaItemDao" factory-method="getInstance"> <!-- 在這裏寫額外的bean的配置和相關引用 --> </bean> <!-- 更多數據訪問層的bean定義寫在這裏 --> </beans>
<?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.xsd"> <!-- services --> <bean id="petStore" class="org.springframework.samples.service.PetStoreServiceImpl"> <property name="accountDao" ref="accountDao"/> <property name="itemDao" ref="itemDao"/> <!-- 在這裏寫額外的bean的配置和相關引用 --> </bean> <!-- 更多Service層的bean定義寫在這裏 --> </beans>
<beans> <import resource="services.xml"/> <import resource="resources/messageSource.xml"/> <import resource="/resources/themeSource.xml"/> <bean id="bean1" class="..."/> <bean id="bean2" class="..."/> </beans>
// create and configure beans ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"services.xml", "daos.xml"}); // retrieve configured instance PetStoreService service = context.getBean("petStore", PetStoreService.class); // use configured instance List<String> userList = service.getUsernameList();