Bean自动装配

Bean自动装配的方式:

  1. byName:根据名称自动装配 ,检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配
  2. byType:根据类型自动装配, 检查容器中一个与指定属性类型相同的bean,那就将其与该属性自动装配,如果存在多个 Spring将无法判断哪个Bean最合适该属性,抛出异常,如果没有找到,则什么事也没发生。
  3.  constructor:根据构造器自动装配  与byType相似,如果容器中没有找到与构造器参数类型一致的bean,那么抛出异常。不推荐使用

一,byName自动装配

bean.xml  配置autowire="byName" 即可

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-3.0.xsd">

    <bean id="textId" class="Automatically.ByName.Text" autowire="byName">bean>
    
    <bean id="speak" class="Automatically.ByName.Speak">bean>
beans>
View Code

TestDao:自动装配,只需写入set方法

public class TextDao {
    private TestService speak;
    public void say(){
        System.out.println("Text  Start");
        speak.say();
    }
    //自动装配,只需写入set方法 配置autowire="byName" 即可
    public void setSpeak(TestService speak) {
        this.speak=speak;
    }
}
View Code

TestService:

public class TestService {
    public void say(){
        System.out.println("Speak----say方法被执行-----");
    }
}
View Code

TestMain :测试类

public class TestMain {

    @Test
    public void Test(){
        ApplicationContext context=new ClassPathXmlApplicationContext("Bean.xml");
        TextDao textDao = (TextDao) context.getBean("textId");
        textDao.say();
    }
}
View Code

运行结果:

Bean自动装配_第1张图片

 

二、byType自动装配

bean.xml   与byName相似 只需修改autowire="byName"autowire="byType"

TestDao  与byName一样

TestService 与byName一样

TestMain  与byName一样

运行结果:

Bean自动装配_第2张图片

 

 

 

 三、constructor 自动装配

bean.xml 与byName相似 只需修改autowire="byName"autowire="constructor"

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-3.0.xsd">
     
    <bean id="textId" class="Automatically.AutoConstructor.TestDao" autowire="constructor">
    bean>

    <bean id="testService" class="Automatically.AutoConstructor.TestService">bean>
beans>
View Code

TestDao : 与上两个不一样的是没有set方法只有构造方法

public class TestDao {
    private TestService speak;
    public TestDao(TestService speak){
        this.speak = speak;
    }
    public void say(){
        System.out.println("TestDao Start:");
        speak.say();
    }
}
View Code

TestService 与byName一样

TestMain  与byName一样

运行结果:

Bean自动装配_第3张图片

你可能感兴趣的:(Bean自动装配)