在创建Bean时候,可以直接赋值。
public class HelloBean {
private String helloWord = "Hello!World!";
private Date date;
public void setHelloWord(String helloWord) {
this.helloWord = helloWord;
}
public String getHelloWord() {
return helloWord + ":" + date.toString();
}
public void setDate(Date date) {
this.date = date;
}
public Date getDate() {
return date;
}
}
再Spring 的application.xml中定义好bean
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dateBean" class="java.util.Date"/>
<bean id="helloBean" class="onlyfun.caterpillar.HelloBean">
<property name="helloWord">
<value>Hello!Justin!</value>
</property>
<property name="date">
<ref bean="dateBean"/>
</property>
</bean>
</beans>
直接指定值或是使用<ref>直接指定参数为其它的Bean。Spring支持"隐士自动绑定",可以通过,类型(byType)或名称(byName)来进行属性的自动绑定。
参数byType的含义:首先通过你创建好的Bean,中去找Date类型,如果存在,autowrie="byType"然后去找BeanFactory中是否存在这个类型。如果存在则,它会根据Bean中的Date类型自动的注入到该Bean中。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dateBean" class="java.util.Date"/>
<bean id="helloBean" class="com.baidu.HelloBean" autowire="byType">
<property name="helloWord">
<value>Hello!Justin!</value>
</property>
</bean>
</beans>
也可以根据byTyName来进行属性绑定。
如果是byName而Date屬性要完成依賴注入的話,則必須修改一下第一個Bean的id值為date。在<bean>上加入dependency-check属性,用来检查自动注入的依赖关系是否完整。该属性有四个参数simple、objects、all、none 。第一个只检查简单的属性。第二个只检查对象的属性,第三个检查全部的属性。默认是none所有的都不去检查。如果有依赖关系不明确或者说不完整的,就会抛出UnsatisfiedDependencyExcpetion 异常。