Spring04-设值方式DI
1.普通设值(通过setter方式)
<bean id="star" class="com.caorui.pojo.Star">
<property name="name" value="彭于晏"></property>
<property name="age" value="23"></property>
<property name="partner" ref="partner"></property>
</bean>
<bean id="partner" class="com.caorui.pojo.Partner">
<property name="name" value="吴彦祖"></property>
</bean>
2.给集合设值(通过setter方式)
package com.caorui.service;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import com.caorui.pojo.Partner;
public class SomeService {
private String[] myArr;
private Set<Partner> mySet;
private List<String> myList;
private Map<String, String> myMap;
private Properties myPro;
public String[] getMyArr() {
return myArr;
}
public void setMyArr(String[] myArr) {
this.myArr = myArr;
}
public Set<Partner> getMySet() {
return mySet;
}
public void setMySet(Set<Partner> mySet) {
this.mySet = mySet;
}
public List<String> getMyList() {
return myList;
}
public void setMyList(List<String> myList) {
this.myList = myList;
}
public Map<String, String> getMyMap() {
return myMap;
}
public void setMyMap(Map<String, String> myMap) {
this.myMap = myMap;
}
public Properties getMyPro() {
return myPro;
}
public void setMyPro(Properties myPro) {
this.myPro = myPro;
}
@Override
public String toString() {
return "SomeService [myArr=" + Arrays.toString(myArr) + ", mySet=" + mySet + ", myList=" + myList + ", myMap="
+ myMap + ", myPro=" + myPro + "]";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="partner1" class="com.caorui.pojo.Partner">
<property name="name" value="吴彦祖"></property>
</bean>
<bean id="partner2" class="com.caorui.pojo.Partner">
<property name="name" value="成龙"></property>
</bean>
<bean id="someService" class="com.caorui.service.SomeService">
<property name="myArr"> //数组
<array>
<value>北京</value> //普通就是value标签
<value>上海</value>
</array>
</property>
<property name="mySet"> //set集合
<set>
<ref bean="partner1"/> //对象引用是ref标签
<ref bean="partner2"/>
</set>
</property>
<property name="myList"> //list
<list>
<value>男</value>
<value>女</value>
</list>
</property>
<property name="myMap"> //map
<map>
<entry key="qq" value="123"></entry>
<entry key="phone" value="123456"></entry>
</map>
</property>
<property name="myPro"> //properties
<props>
<prop key="兴趣">足球</prop>
<prop key="爱好">书法</prop>
</props>
</property>
</bean>
</beans>
3.自动注入(byName/byType)
- byName方式(局部)
- 设值方式DI byName方式自动注入:spring配置文件中查询id与Star对象中的 属性名partner一致。
<bean id="star" class="com.caorui.pojo.Star" autowire="byName">
<property name="name" value="彭于晏"></property>
<property name="age" value="23"></property>
</bean>
<bean id="partner" class="com.caorui.pojo.Partner">
<property name="name" value="吴彦祖"></property>
</bean>
- byType方式(局部)
- 设值方式DI byType方式域属性自动注入:spring配置文件中查询与属性类型com.caorui.pojo.Partner一致的bean并进行注入。
<bean id="star" class="com.caorui.pojo.Star" autowire="byType">
<property name="name" value="彭于晏"></property>
<property name="age" value="23"></property>
</bean>
<bean id="partner" class="com.caorui.pojo.Partner">
<property name="name" value="吴彦祖"></property>
</bean>
- 全局配置byName/byType
- beans标签属性default-autowire。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-autowire="byType">
<bean id="star" class="com.caorui.pojo.Star">
<property name="name" value="彭于晏"></property>
<property name="age" value="23"></property>
</bean>
<bean id="partner" class="com.caorui.pojo.Partner">
<property name="name" value="吴彦祖"></property>
</bean>
</beans>
4.给属性注入空字符串和null
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="star" class="com.caorui.pojo.Star">
<property name="name"><null/></property>
<property name="age" value="23"></property>
<property name="partner" ref="partner"></property>
</bean>
<bean id="partner" class="com.caorui.pojo.Partner">
<property name="name" value="吴彦祖"></property>
</bean>
</beans>
5.构造方法注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="star" class="com.caorui.pojo.Star">
<constructor-arg value="彭于晏"></constructor-arg>
<constructor-arg value="12"></constructor-arg>
<constructor-arg ref="partner"></constructor-arg>
</bean>
<bean id="partner" class="com.caorui.pojo.Partner">
<property name="name" value="吴彦祖"></property>
</bean>
</beans>