ApplicationContextAwareProcessor
时间: 2023-11-14 12:00:09 浏览: 32
ApplicationContextAwareProcessor是一个处理器,它继承自BeanPostProcessor接口。它的主要作用是对实现了Aware接口的类进行后置处理,包括ApplicationContextAware接口。Aware接口是Spring框架提供的一组接口,用于在bean实例化后,自动注入一些环境信息或者其他的一些资源。ApplicationContextAwareProcessor在bean的属性注入时,会忽略那些实现了Aware接口的类的setXX方法的注入,也就是忽略ApplicationContext的注入。
相关问题
为什么调用了AnnotationConfigUtils.registerAnnotationConfigProcessors() 后,还要通过beanFactory.addBeanPostProcessor(beanPostProcessor)方法
虽然 AnnotationConfigUtils.registerAnnotationConfigProcessors() 方法已经向 BeanFactory 中注册了用于处理注解配置类的 BeanPostProcessor,但这个后处理器并不是 BeanFactory 的唯一后处理器。在 Spring 中,还有很多其他类型的后处理器,比如 ApplicationContextAwareProcessor、AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor 等等。
因此,在向 BeanFactory 中注册 AnnotationConfigUtils 类型的 BeanPostProcessor 后,还需要向 BeanFactory 中添加其他类型的后处理器,以便能够处理 BeanFactory 中的所有 Bean。这时就需要使用 beanFactory.addBeanPostProcessor(beanPostProcessor) 方法,将其他类型的后处理器添加到 BeanFactory 中。
需要注意的是,BeanPostProcessor 的添加顺序也很重要,因为它们会按照添加的顺序依次对 Bean 进行处理。通常情况下,AnnotationConfigUtils.registerAnnotationConfigProcessors() 方法会将 AnnotationConfigUtils 类型的 BeanPostProcessor 添加到 BeanFactory 的最前面,以确保它能够优先处理注解配置类。而其他类型的后处理器则会根据需要进行添加。
Spring有哪些实现BeanPostProcessor的类
1. AutowiredAnnotationBeanPostProcessor:处理@Autowired注解的依赖注入。
2. CommonAnnotationBeanPostProcessor:处理JSR-250规范的注解,如@Resource和@PostConstruct等。
3. CustomAutowireConfigurer:自定义的依赖注入配置器。
4. InitDestroyAnnotationBeanPostProcessor:处理@PostConstruct和@PreDestroy等生命周期注解。
5. PersistenceAnnotationBeanPostProcessor:处理JPA规范的注解,如@PersistenceContext和@PersistenceUnit等。
6. RequiredAnnotationBeanPostProcessor:处理@Required注解,用于检测Bean的必需属性是否已设置。
7. ServletContextAwareProcessor:处理实现了ServletContextAware接口的Bean,为其注入ServletContext对象。
8. ApplicationContextAwareProcessor:处理实现了ApplicationContextAware接口的Bean,为其注入ApplicationContext对象。
9. BeanValidationPostProcessor:处理JSR-303规范的注解,如@Valid和@Validated等。
10. AsyncAnnotationBeanPostProcessor:处理@Async注解,用于实现异步方法调用。