Spring05:自动装配

自动装配说明

  • 自动装配是使用spring满足bean依赖的一种方法

  • spring会在应用上下文中为某个bean寻找其依赖的bean。

环境搭建

Cat.java

public class Cat {
   public void shout() {
       System.out.println("miao~");
  }
}

Dog.java

public class Dog {
   public void shout() {
       System.out.println("wang~");
  }
}

User.java

public class User {
   private Cat cat;
   private Dog dog;
   private String str;
}

不使用自动装配的配置

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

   <bean id="dog" class="com.kuang.pojo.Dog"/>
   <bean id="cat" class="com.kuang.pojo.Cat"/>

   <bean id="user" class="com.kuang.pojo.User">
       <property name="cat" ref="cat"/>
       <property name="dog" ref="dog"/>
       <property name="str" value="qinjiang"/>
   </bean>
</beans>

byName

autowire byName (按名称自动装配)

修改bean配置,增加一个属性 autowire="byName"

<bean id="user" class="com.kuang.pojo.User" autowire="byName">
   <property name="str" value="qinjiang"/>
</bean>

小结:

当一个bean节点带有 autowire byName的属性时。

1、将查找其类中所有的set方法名,例如setCat,获得将set去掉并且首字母小写的字符串,即cat。

2、去spring容器中寻找是否有此字符串名称id的对象。

3、如果有,就注入此对象;如果没有,会报空指针异常。

byType

autowire byType (按类型自动装配)

  • 按类型自动装配,会从spring容器中找到其所依赖的类型的bean进行注入

  • 如果spring容器中有多个此类型的bean,会报不唯一的异常。

  • 按类型自动装配,也需要提供set方法

posted @ 2021-04-29 22:55  yub  阅读(55)  评论(0)    收藏  举报