读书人

自动安装之byName

发布时间: 2012-08-29 08:40:14 作者: rapoo

自动装配之byName

自动装配之byName

byName:根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。例如,在bean定义中将autowire设置为by name,而该bean包含master属性(同时提供setMaster(..)方法),Spring就会查找名为master的bean定义,并用它来装配给master属性。

下面通过示例来理解:

JavaBean代码:

//JavaBeanàPerson定义了一个name属性,和一个相应的set依赖注入方法

public class Person {

??? private String name;

??? public void setName(String name) {

?????? this.name = name;

??? }??

}

//JavaBeanàStudentServiceImpl继承了Person

public class StudentServiceImpl extends Person{

}

//JavaBeanàTeacherServiceImpl,定义一个studentSerciceImpl,和一个相应的set依赖注入方法和get方法。

public class TeacherServiceImpl {

??? private StudentServiceImpl studentServiceImpl;

??? public void setStudentServiceImpl(StudentServiceImpl studentServiceImpl) {

?????? this.studentServiceImpl = studentServiceImpl;

??? }

??? public StudentServiceImpl getStudentServiceImpl() {

?????? return studentServiceImpl;

??? }

}

byname.xml文件:

不用byName:

<bean id="person" class="cn.csdn.byname.Person">

?????? <property name="name">

?????????? <value>Well_Being</value>

?????? </property>

??? </bean>

??? <bean id="studentServiceImpl" class="cn.csdn.byname.StudentServiceImpl" scope="singleton" parent="person"/>

??? <bean id="teacherServiceImpl" class="cn.csdn.byname.TeacherServiceImpl" scope="singleton">

?????? <property name="studentServiceImpl" ref="studentServiceImpl"/>

??? </bean>

用byName:

<bean id="person" class="cn.csdn.byname.Person">

?????? <property name="name">

?????????? <value>Well_Being</value>

?????? </property>

??? </bean>

??? <bean id="studentServiceImpl" scope="singleton" parent="person"/>

??? <bean id="teacherServiceImpl" scope="singleton" autowire="byName"></bean>

?

黄色区域代表两者的区别:

读书人网 >软件架构设计

热点推荐