自动装配(引用类型)
环境准备:
文件结构如下图所示,Dao层的实现类里面有一个save方法,Service层里面的实现类有一个BookDao的声明和一个set方法,同时也有一个save方法,配置类的扫描范围如图所示
在当前的一个测试类当中使用注解配置应用上下文运行如下的代码测试如图
虽然bookDaoImpl和bookServiceImpl都被注册到了IOC容器里面,但是因为没有成功实现依赖注入 ,因此只执行了service的save方法;
自动依赖注入(按照类型自动注入)
要想给bookService里面bookDao实现注入,只需要用到一个注解
@Autowired 自动装配
现在可以看见bookDao类有成功实现了注入。这里可以直接把bookDao的set方法只留下一个声明
到这里就可以把之前setter方法注入,构造函数注入等方法都统统抛弃了
按照名称精确注入
在上面的方法中如果bookDao只有一个实现类还可以使用按照类型装配,但是如果bookDao有两个实现类就必须要采用按名称装配。
需要在被注入的对象上面用到一个新的注解
@Qualifier("bookDao") ,bookDao是实现类的名称
总结:
自动装配(简单类型)
需要用到一个@Value的标签,参数就是需要注入的值
上面是在类里面直接注入值,但是属性值有可能来自外部的properties文件,下面使用加载properties文件的方式实现注入
第一步(加载properties到配置类)
在 properties中如下配置
使用一个@PropertySource(属性源)注解加载properties文件
第二步(使用参数占位符加载参数)
注意:
当需要加载多个properties文件时候需要像下面这样写
第三方bean管理和第三方bean依赖注入
使用阿里的druid作为第三方资源
第一步
在配置类中手动编写方法获取要管理的对象
这里使用加载properties文件的方式注入对象参数
第二步(将上面方法的返回值定义成一个bean)
在方法上面使用@Bean注解表示当前方法的返回值是一个bean,
可以设定名称为"datasource"
第三步
在测试代码中获取该bean对象并打印
通常第三方bean对象编写都要单独使用一个配置类使用然后再导入本项目的配置类当中
新建一个JdbcConfig,然后再在本配置类使用一个注解导入
可以精确看出导入了哪些配置类