依赖自动装配
- 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注入和构造器注入,同时出现时自动装配配置失效