spring自動注入有5中方式,分別是:java
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.sprintframework.org/dtd/spring-beans.dtd"> <beans> <bean id="EnHelloWorld" class="cn.action.EnHelloWorld"> <constructor-arg index="0"> <value>xwt!</value> </constructor-arg> <constructor-arg index="1"> <value>cm!</value> </constructor-arg> <constructor-arg index="2"> <ref bean="date"/> </constructor-arg> </bean> <!--id中不能夠包含特殊字符。一個bean中能夠沒有ID,此時能夠用name來代替id, 能夠有多個name,中間用‘,’隔開。id和name能夠同時存在 --> <!--sigleton默認爲true。當true時,會共享一個實例,每次請求返回的都是同一個。就是單例模式 若是爲false,每次請求都會返回一個新建立的實例 --> <bean id="ChHelloWorld" class="cn.action.HelloWorld" autowire="constructor" > <property name="msg"> <value>xxxx</value> </property> <property name="date"> <ref bean="date"/> </property> </bean> <bean id="date" class="java.util.Date"/> <bean name="dog" class="cn.model.Dog"> <property name="name"> <value>TT</value> </property> </bean> </beans>
總結:顯示的依賴例如property和constructor-arg元素總會覆蓋自動裝配,對於大型應用來講不推薦使用自動注入。由於它去除了參考依賴的透明性和清晰性。還有值得注意的一點就是byName和 byType兩種自動注入方式不能注入基本類型。spring