註入方式
1 setter註入
<bean id=".." class="..">
<property name="屬性名" [ref=""]>
<ref bean="要註入的bean的id"/>
</property>
</bean>
註意:setter註入是通過屬性的set方法註入的,所有
屬性一定要提供getter/setter方法.
2 構造器註入
<bean id=".." class="..">
<constructor-arg>
<value>xx</value>
</constructor-arg>
</bean>
註意:構造器註入是通過bean的構造函數去註入的,所以
一定要提供有相關的構造函數和無參構造函數.
註意:a.一個constructor表示一個參數,且不區分順序.
b.constructor可以通過index屬性,指定參數的位置索引(index從0開始).
c.constructor可以通過type屬性避免字符串和基本數據類型的混淆.
3 p命名空間註入
語法:
p:屬性名="值" //基本數據類型和String註入值
p:屬性名-ref="bean的id值" //引用bean的屬性註入值.
註意:如果要使用p:,需要在配置文件中引入
xmlns:p="http://www.springframework.org/schema/p"
註意:p命名空間是bean屬性形式的註入方式.其他的是子元素註入方式
例: <bean id=".." class=".." p:age="18"/>
4 setter註入和構造器註入的區別
1)setter是通過setter方法實現
構造器註入是通過構造函數實現
2)setter註入靈活性好.
構造器註入靈活性較差.
3)setter註入時效性差
構造器註入時效性好
4)setter註入對象通過無參構造函數創建
構造器註入對象通過構造方法創建,建議保留無參構造函數.
註入方式