构造注入
使用方式
构造注入在生成对象使用构造方法的时候会调用
xml配置的主要写法为<construct-arg name... value>
如下 :
<bean name="person" class="com.woder.spring.pojo.Person">
<constructor-arg name="name2" value="jay" ></constructor-arg>
<constructor-arg name="age2" value="12"></constructor-arg>
</bean>
注意! name对应的名字一定是构造函数中的变量参数的名字
参数顺序重载
由于构造注入与顺序无关,当构造函数重载时可以通过``index和
type```选择构造函数,如当有以下两个构造函数的时候:
//第一个构造函数
public Person(String name2, Integer age2){
...
}
//第二个构造函数
public Person(String age2, Integer name2){
...
}
使用以下配置将会选择第二个构造函数
<constructor-arg name="name2" value="jay" index="1" ></constructor-arg>
<constructor-arg name="age2" value="12" index="0" ></constructor-arg>
参数类型重载
有时候构造函数的参数会出现名字相同,但是类型不同的情况,可以通过关键字type
指定重载的构造函数,如下:
//第一个构造函数
public Person(String name2, String age2){
...
}
//第二个构造函数
public Person(String name2, Integer name2){
...
}
当使用如下配置的时候将会选择第二个构造函数
<constructor-arg name="name2" value="jay" index="0" ></constructor-arg>
<constructor-arg name="age2" value="12" index="1" type="java.lang.Integer" ></constructor-arg>
set注入
set注入方式,bean创建完对象之后会马上调用set方法去设置不同成员的属性,所以一定要有set方法:
xml 配置的主要写法为<property name... value....>
<bean name="person" class="com.woder.spring.pojo.Person">
<!-- property 标明这是一个set注入-->
<!-- name 标明要修改的属性值-->
<!-- value 标明要改成的值-->
<property name="name" value="tom"></property>
<property name="age" value="19"></property>
</bean>
当需要传递对象进行set注入的时候,需要用到关键词ref
<bean name="personCar1" class="com.woder.spring.pojo.Car">
</bean>
<bean name="person" class="com.woder.spring.pojo.Person">
<property name="personCar" ref="personCar1"></property>
</bean>
名称空间注入
名称空间是一种等价于set注入的注入方式,使用前需要现在配置文件上创建名称空间
<beans
xmlns:p="http://www.springframework.org/schema/p">
</beans>
下列两种注入方式相等
<bean name="person" class="com.woder.spring.pojo.Person"
p:name="tom"
p:age="18"
p:personCar-ref="personCar1">
</bean>
<bean name="person" class="com.woder.spring.pojo.Person">
<property name="name" value="tom"></property>
<property name="age" value="19"></property>
<property name="personCar" ref="personCar1"></property>
</bean>
表达式注入
当需要使用另一个bean对象中的属性值作为注入的时候就需要用到表达式了#{}
,如下
<bean name="person1" class="com.woder.spring.pojo.Person"
p:name="tom"
p:age="18"
p:personCar-ref="personCar1">
</bean>
<bean name="person2" class="com.woder.spring.pojo.Person"
p:name="#{person1.name}"
p:age="#{person1.age}"
p:personCar-ref="#{person1.personCar}">
</bean>
网友评论