1、autowiring(自动依赖装配)的实现
自动装配中不需要对Bean属性做显示的依赖管理方式,只需要配置好autowiring的属性就可以,IOC容器会自动根据这个属性的配置通过反射自动找到属性的类型或者名字,然后根据名字或者类型自动匹配IOC容器中的Bean。
自动装配的匹配方式有两种:autowireByName和autowireByType。
2、Bean的依赖检查
检查依赖关系的有效性。
Spring 通过依赖检查可以检测是否所有属性都设置正确,应用只需要在Bean定义中设置dependency-check属性来指定依赖检查的模式,共有四种模式,分别是none,simple,object,all,默认为none。
具体实现是在AbstractAutowireCapableBeanFactory实现createBean的过程中完成的。如果不符合要求,则抛出异常。
3、Bean对IOC容器的感知
某些特定情况下需要Bean对IOC容器操作,所以需要在Bean中设置对IOC容器的感知,通过特定的aware接口来完成。
(1)BeanNameAware:在Bean中得到Bean在IOC容器的名字。
(2)BeanFactoryAware:在Bean中得到Bean所在的容器,从而直接在Bean中使用IOC容器服务。
(3)ApplicationContextAware:在Bean中得到Bean所在的应用上下文,从而直接在Bean中使用应用上下文的服务。
(4)MessageSourceAware:在Bean中获取消息源。
(5)ApplicationEventPublisherAware:在Bean中获取上下文的事件发布器,从而可以在Bean中发布应用上下文事件。
(6)ResourceLoaderAware:在Bean中得到ResourceLoader,从而在Bean中使用ResourceLoader加载外部对应的Resource资源。
设置Bean属性之后,调用初始化回调方法之前,Spring会调用aware接口中的Setter方法。