您的位置:首页 > 编程语言 > Java开发

Spring-自动注入ByName,ByType

2018-03-19 19:56 363 查看

1.School类

package top.wyyblog.DI5;

public class School {

private String name;

public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "School [name=" + name + "]";
}
}


2.Student类

package top.wyyblog.DI5;

public class Student {
private String name;
private int age;
private School school;

public Student() {
}

public void setName(String name) {
this.name = name;
}

public void setAge(int age) {
this.age = age;
}

public void setSchool(School school) {
this.school = school;
}

@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", school=" + school + "]";
}
}


3.测试类
package top.wyyblog.DI5;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestDemo {

public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("top/wyyblog/DI5/applicationContext.xml");
Student student = (Student) context.getBean("student");
System.out.println(student);
}
}

4.自动注入(applicationContext.xml配置文件)

        (a). byName自动注入

                         
<bean id="school" class="top.wyyblog.DI5.School">
<property name="name" value="极速学院"></property>
</bean>
<!-- autowire="byName"会从容器中查找与实体类的域属性同名的Bean 的id,
并将该Bean对象自动注入给该域属性 -->
<bean id="student" class="top.wyyblog.DI5.Student" autowire="byName">
<property name="name" value="李四"></property>
<property name="age" value="80"></property>
</bean>
            

        (b). byType自动注入

<bean id="school2" class="top.wyyblog.DI6.School">
<property name="name" value="极速学院"></property>
</bean>
<!-- autowire="byType"会从容器中查找与实体类的域属性类型具有 is-a 关系的Bean,
并将该Bean对象自动注入给该域属性 -->
<bean id="student" class="top.wyyblog.DI6.Student" autowire="byType">
<property name="name" value="李四"></property>
<property name="age" value="80"></property>
</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: