Spring IoC容器依赖检查特性
Problem:
一个容器中往往需要管理许多组件,以及组件之间的依赖。
Setter依赖注入方式没办法保证依赖一定注入或依赖注入后的安全性。
所以产生这样的需求——检查每个组件(即对象),他们的属性中是否都被正确的设置了组件依赖(即依赖对象的引用)
SolutionA:
通过Spring依赖检查特性,可以以组件(bean中所有属性)的粒度检查依赖是否被注入。
依赖检查特性只能检查属性值是否被设置,如果属性值设置成null,这是无法检查的。
依赖检查特性只能检查依赖是否被setter注入,如果此依赖选择使用构造器注入的话,即使注入了也会抛出UnsatisfiedDependencyException。
SolutionB:
以属性粒度的依赖检查。使用Bean后置处理器来进行。RequiredAnnotationBeanPostProcessor,它会检查所有具有@Required注解setter方法对应的属性是否被设置。
RequiredAnnotationBeanPostProcessor是一种特殊类型的SpringBean,也需要声明后才有用。