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:,需要在配置文件中引入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注入对象通过无参构造函数创建
构造器注入对象通过构造方法创建,建议保留无参构造函数.