三种属性注入方式
构造函数注入
1、在Bean实体中写入构造函数(带参构造)
2、
<bean id=”该bean的名称” class=”注入的bean的全路径”> <constructor name=”属性名” value=”属性值”/> < constructor name=”属性名” ref=”其他Bean对象id”/> </baen>
属性setter方法注入(使用最多)
1、在Bean实体中写入setter方法
2、
<bean id=”该bean的名称” class=”注入的bean的全路径”> <property name=”属性名” value=”属性值”/> <property name=”属性名” ref=”其他Bean对象id”/> </baen>
接口注入(不推荐,spring不支持)
Spring属性注入简化写法
P名称空间注入
简化XML文件配置,spring从2.5开始引入新的p名称空间
1、 引入p名称空间:
xmlns:p=http://www.springframework.org/schema/p
2、 配置引入文件
引入普通属性:
<bean id=”该bean的名称” class=”注入的bean的全路径” p:属性名=”属性值”/baen>
引入类对象属性:
<bean id=”该bean的名称” class=”注入的bean的全路径” p:ref-属性名=”属性值”/baen>
SpEL注入
语法:
<bean id=”该bean的名称” value=”#{表达式}”/>
语言:
1、#{‘hello’}:使用字符串
2、#{beanId}:使用其他Bean对象
3、#{beanId.content.toUpperCase()}:使用其他Bean对象属性,并使用其方法
4、#{T(java.lang.Math).PI}:使用静态字段或方法
Spring expression language(spring表达式语言,对依赖注入进行简化)
复杂类型的属性注入
使用范围:整合其他框架
数组类型
<property name=”属性名” > <list> <value>数组的第一个值</value> <value>数组的第二个值</value> … </list> </property>
List集合
<property name=”属性名” > <list> <value>list的第一个值</value> <value>list的第二个值</value> … </list> </property>
Set集合
<property name=”属性名” > <set> <value>set的第一个值</value> <value>set的第二个值</value> … </set> </property>
Map集合
<property name=”属性名” > <map> <entry key=”map的key” value=”map的value”/ > <entry key=”map的key” value=”map的value” / > … </map> </property>
Properties集合
<property name=”属性名” > <props> <prop key=” prop的key” >value</prop> < prop key=” prop的key” >value</prop> … </ props> </property>