为例更加方便地进行类的引入和功能实现,我们需要自动化的类装配机制
这里引入几种自动装配机制
1.按类型自动装配---指在bean配置之中按类型引入类,简化了property(但是还是setter引入的一种)
bookservice中依旧是使用setter来声明并使用bookdao类
@Service
public class BookServiceImpl implements BookService {
private BookDao bookDao;
// public BookServiceImpl(BookDao bookDao){
// this.bookDao=bookDao;
// }
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
}
但是在bean配置文件里面就是使用autowire来指定按类型引入
注意,这里按类型装配是指在bean配置文件中按类型装配,如果在bean配置文件中再引入一个接口
<bean id="bookDao2" class="com.itheima.dao.impl.BookDaoImpl"/>
就会导致类型不唯一而报错()
于是我们有了第二种自动装配方法---按名称装配---就是bean配置文件中atuowrie="bookDao"中的bookDao和bookservice中引入类的语句private BookDao bookDao中的bookDao匹配
只需在bean配置文件中将autowire语句写成atuo-wrie="byName"即可
为什么说这种方法可以避免之前的窘境呢?
因为我们在bean配置文件中接口的id号是唯一的,而这个id号又可以和类的名称形成校验,于是这里不拍多接口
看看id-name校验
这里也说明其实按类型引入反而不用进行id-name校验
2.集合注入
集合注入比较简单,就是学个格式就好
bookdao中进行集合的实现
bean中实现集合的配置与初始化
其他几个集合的注入形式大同小异