1.2-Spring Beans 自动装配

自动装配 ‘byName’

关键字autowire=”byName”

public class Test1{
    private Test2 test2;
    private String name;
    //省略get/set方法
    public void check(){
        test2.check();
    }
}

public class Test2(){
    public Test2(){
        System.out.println("test2的构造函数");
    }
    public void check(){
        System.out.println("test2的check()方法");
    }
}

bean可以通过关键字byName去自动寻找test1类中需要的方法test2,找到bean.xml中的testTwo,就自动装配给test1中的test2的set方法。
autowire=”byName”的作用相当于<property name="test2" ref="test2" />
前提:
名字必须保持一致,因为它尝试将它的属性与配置文件中定义为相同名称的 beans 进行匹配和连接

<bean id="test1" class="com.xxx.xxx.Test1" autowire="byName">
       <property name="name" value="test" />
</bean>

<bean id="test2" class="com.xxx.xxx.Test2"/>

自动装配 ‘byType’

关键字autowire=”byType”
与byName不同的是,即使名字不一致也可以匹配到,因为它将尝试匹配和连接它的属性

<bean id="test1" class="com.xxx.xxx.Test1" autowire="byName">
       <property name="name" value="test" />
</bean>

<bean id="testTwo" class="com.xxx.xxx.Test2"/>

自动装配构造函数

关键字autowire=”constructor”

public class Test1{
   private Test2 test2;
   private String name;
   public Test1( Test2 test2, String name ) {
      this.test2= test2;
      this.name = name;
   }
   public Test2  getTest2 () {
      return spellChecker;
   }
   public String getName() {
      return name;
   }
   public void check() {
      test2.check();
   }
}

public class Test2  {
   public Test2  (){
      System.out.println("test2的构造函数" );
   }
   public void check()
   {
      System.out.println("test2的check()方法" );
   }  
}

bean中使用了autowire=”constructor”,那么当前的bean就会通过构造函数自动装配
可以使用 <constructor-arg> 标签连接其余属性

<bean id="test1" class="com.xxx.xxx.Test1" autowire="constructor">
      <constructor-arg value="test"/>
</bean>

<bean id="test2" class="com.xxx.xxx.Test2"/>
发布了113 篇原创文章 · 获赞 48 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/yehui928186846/article/details/81270176