依赖自动装配

IoC容器根据Bean所依赖的资源在容器中自动查找并注入到Bean中的过程称为自动装配

自动装配方式:

  • 按类型(常用)
  • 按名称
  • 按构造方法
  • 不启用自动装配

配置中使用bean标签autowire属性设置自动装配的类型

// applicationContext.xml

<bean class="com.xxx.dao.impl.BookDaoImpl" />
<bean id="bookService" class="com.xxx.service.impl.BookServiceImpl" autowire="byType"/>

// applicationContext.xml

<bean name="bookDao" class="com.xxx.dao.impl.BookDaoImpl" />
<bean id="bookService" class="com.xxx.service.impl.BookServiceImpl" autowire="byName"/> // 匹配的是 set 方法去掉'set'的名称

public class BookServiceImpl implements BookService{
    private BookDao bookDao;

    public void setBookDao(BookDao bookDao){
        this.bookDao = bookDao;
    }

    public void save(){
        System.out.println("book service save ...");
        bookDao.save();
    }
}
  • 自动装配用于引用类型依赖注入,不能对简单类型进行操作

  • 使用按类型装配时(byType)必须保障容器中相同类型的bean唯一,推荐使用

  • 使用按名称装配时(byName)必须保障容器中具有指定名称的bean,因变量名与配置耦合,不推荐使用

  • 自动装配优先级低于setter注入与构造器注入,同时出现时自动装配配置失效