Spring Bean的自动装配(Autowiring)

Posted on 2017-12-07 18:00  songsong_DBB  阅读(120)  评论(0)    收藏  举报

Spring Bean的自动装配的方式:

  byName:根据属性名自动装配,这个选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配。

  byType:如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配;如果存在多个该类型的bean,那么抛出异常,如果没有找到相匹配的bean,则什么事都不发生。

  Constructor:与byType方式相似,不同之处在于他应用于构造器参数,如果容器中没有找到与构造器参数类型一直的bean,则抛出异常。

  配置的xml文件如下:

<?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" 
        default-autowire="byName">
        
        <bean id="autoWiringService" class="com.imooc.autowiring.AutoWiringService" ></bean>
        
        <bean id="autoWiringDAO" class="com.imooc.autowiring.AutoWiringDAO" ></bean>
    
 </beans>
default-autowire="byName"表示使用byName模式,此时要求在 AutoWiringService类中有如下定义:
  
  private AutoWiringDAO autoWiringDAO;

    public void setAutoWiringDAO(AutoWiringDAO autoWiringDAO) {
        System.out.println("setAutoWiringDAO");
        this.autoWiringDAO = autoWiringDAO;
    }

即可通过该set方法给 autoWiringDAO 实例化一个对象。如果 id="autoWiringDAO" 与  AutoWiringDAO autoWiringDAO名称不一致,则什么也不发生。

default-autowire="byType"方式,此方式与name无关,只要求 com.imooc.autowiring.AutoWiringDAO的类型与 AutoWiringDAO autoWiringDAO的类型一致。
default-autowire="constructor"方式,要求在 AutoWiringService 类中定义一个构造器,传入的参数要与com.imooc.autowiring.AutoWiringDAO的类型保持一致。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3