一 DI技术简介
它是IOC的一种重要实现,用一个单独的对象(装配器)来装配对象之间的依赖关系
通过将依赖关系写入配置文件,然后在创建有依赖关系的对象时,由IOC容器注入依赖的对象
Dependency Injection ,依赖注入
is a :是一个,继承。has a:有一个,成员变量,依赖。
class B {
private A a; //B类依赖A类
}
依赖:一个对象需要使用另一个对象
注入:通过setter方法进行另一个对象实例设置。
通过图书类的Dao层和Service层,服务层调用数据访问层的数据新增方法
DAO层 BookDao 接口 + BookDaoImpl 实现类
BookDaoImpl 实现类中写上图书信息的新增方法
Service层 BookService 接口 + BookServiceImpl 实现类
class BookServiceImpl{
//接口 = 实现类 (service和dao耦合)
//private BookDao bookDao = new BookDaoImpl();
}
Spring DI的原始实现方式
现有数据层
服务层
测试层
DI依赖注入方式
xml的配置方式
通过bean的property节点的name属性来配置对应的setter方法
服务层的实现类的setter方法要和前面的匹配
即setBookDao或setbookDao,按住alt可以调转到<property name="bookDao"....>
使用单元测试来测试效果
Spring DI注解方式
注解:就是一个类,使用@注解名称
开发中:使用注解 取代 xml配置文件。
1. @Component取代<bean class="">
@Component("id") 取代 <bean id="" class="">
2.web开发,提供3个@Component注解衍生注解(功能一样)取代<bean class="">
@Repository :dao层
@Service:service层
@Controller:web层
3.依赖注入 ,给私有字段设置,也可以给setter方法设置
普通值:@Value("")
引用值:
方式1:按照【类型】注入 @Autowired
方式2:按照【名称】注入1
@Autowired
@Qualifier("名称")
方式3:按照【名称】注入2
@Resource("名称")
修改spring的配置文件applicationContext.xml
dao层的实现类注释
service层的实现类注释