Spring - 依赖自动装配

35 阅读1分钟

依赖自动装配

  • Ioc容器根据bean所依赖的资源在容器中自动查找并注入到bean中的过程称为自动专配
  • 自动装配方式 1、按类型(常用)

2、按名称

3、按构造器(不推荐使用)

自动装配

1、定义引用数据类型属性和可访问的set方法

package com.itheima.service.impl;

import com.itheima.dao.BookDao;
import com.itheima.service.BookService;


public class BookServiceImpl implements BookService {
    //自动装配
    private BookDao bookDao;//在bean中定义引用类型属性

    @Override
    public void bookService() {
        System.out.println("BookService");
        bookDao.bookDao();
    }

    // 提供可访问的set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

2、自动装配配置

  • autowire="byType"按照类型进行装配
  • 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.xsd">

<!--    将自动装配的bean定义好-->
    <bean id="bookDao" class="com.itheima.dao.impl.BookDaoImpl"/>
<!--    自动装配配置
        autowire="byType"按照类型进行装配
        autowire="byName"按照名称进行装配(不推荐使用 耦合性高)-->
    <bean id="bookService" class="com.itheima.service.impl.BookServiceImpl" autowire="byType"/>

</beans>

依赖自动装配特征

  • 自动装配用于引用类型依赖注入,不能对简单类型进行操作

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

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

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