spring autowired和resource生效的幾種情況
阿新 • • 發佈:2019-02-06
本質
@Autowired和@Resource是由兩個BeanPostProcessor; 不過在spring內部,有一些特殊用途的BeanPostProcessor子介面.
其中,執行到postProcessMergedBeanDefinition時,解析對應bean class中的Autowired Annotation.生成InjectMetadata;
在設定物件屬性時,則執行postProcessPropertyValues去執行對應的InjectMetadata.inject()方法。
註釋生效的幾種方式
1.在xml中手動注入對應的類
<bean class=" org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor />
2.使用AnnotationConfigUtils.registerAnnotationConfigProcessors()方法手動注入, 例如mybatis的MapperScannerConfigurer.
3, 其他的兩種也可都是使用2中的方式進行注入
<context:annotation-config / >
<context:component-scan / >
這兩種配置最終也是通過AnnotationConfigUtils static方法去喚起AutowiredAnnotationBeanPostProcessor。