属性依赖注入
1.构造方法
关键字:<constructor-arg>
属性值:
name:参数名称
value:普通数据值
ref:引用数据,一般是另一个bean id值
index:参数索引号,从0开始 。如果只有索引,匹配到了多个构造方法时,默认使用第一个
type :参数类型
目标类:
private Integer id;
private String username;
private Integer userage;
public User(Integer id, String username) {
super();
this.id = id;
this.username = username;
}
public User(String username, Integer userage) {
super();
this.username = username;
this.userage = userage;
}
.xml:
<!-- 方式一 名称name-->
<bean id="User" class="cn.itcast.spring.cons.User">
<constructor-arg name="id" value="0"></constructor-arg>
<constructor-arg name="username" value="jack"></constructor-arg>
</bean>
<!-- 方式二 索引 index和类型type -->
<bean id="User" class="cn.itcast.spring.cons.User">
<constructor-arg index="0" type="java.lang.Integer" value="0"></constructor-arg>
<constructor-arg index="1" type="java.lang.String" value="jack"></constructor-arg>
</bean>
2.setter方法
setter方法注入
* 值数据
<property name="" value="值">
等效
<property name="">
<value>值</value>
* 引用数据
<property name="" ref="另一个bean">
等效
<property name="">
<ref bean="另一个bean"/>
<bean id="personId" class="com.itheima.f_xml.b_setter.Person">
<property name="pname" value="曾小贤"></property>
<property name="age">
<value>1234</value>
</property>
<property name="homeAddr" ref="homeAddrId"></property>
<property name="companyAddr">
<ref bean="companyAddrId"/>
</property>
</bean>
3.p命名空间(了解)
xmlns:p="http://www.springframework.org/schema/p
<bean id="personId" class="com.itheima.f_xml.c_p.Person"
p:pname="AC" p:age="22"
p:homeAddr-ref="homeAddrId" p:companyAddr-ref="companyAddrId">
</bean>
4.spel(了解)
对<property>
进行统一编程,所有的内容都使用value
<property name="" value="#{表达式}">
#{123}、#{'jack'} : 数字、字符串
#{beanId} :另一个bean引用
#{beanId.propName} :操作数据
#{beanId.toString()} :执行方法
#{T(类).字段|方法} :静态方法或字段
<!--
<property name="cname" value="#{'jack'}"></property>
<property name="cname" value="#{customerId.cname.toUpperCase()}"></property>
通过另一个bean,获得属性,调用的方法
<property name="cname" value="#{customerId.cname?.toUpperCase()}"></property>
?. 为空判断
-->
<bean id="customerId" class="com.itheima.f_xml.d_spel.Customer" >
<property name="cname" value="#{customerId.cname?.toUpperCase()}"></property>
<property name="pi" value="#{T(java.lang.Math).PI}"></property>
</bean>
5.集合注入
集合的注入都是给<property>添加子标签
数组:<array>
List:<list>
Set:<set>
Map:<map> ,map存放k/v 键值对,使用<entry>描述
Properties:<props> <prop key=""></prop>
值数据:<value>
引用数据:<ref>
<bean id="collDataId" class="com.itheima.f_xml.e_coll.CollData" >
<property name="arrayData">
<array>
<value>AA</value>
<value>AB</value>
<value>AC</value>
<value>AD</value>
</array>
</property>
<property name="propsData">
<props>
<prop key="店员">S</prop>
<prop key="警察">T</prop>
<prop key="医生">D</prop>
</props>
</property>
</bean>