PostProcess

后处理器:

AutowiredAnnotationBeanPostProcess.class

  可以处理@Autowired、@Value

  如何注册:context.registerBean(xxx.class);

  执行原理:

    定位注解使用处:InjectionMetadata 查找加了@Autowired的属性和方法

    依赖注入:调用InjectionMetadata.inject 来进行依赖注入,注入时按类型查找值

    按类型查找值:将所要找的bean信息封装到DependencyDescriptor对象中,再用beanFactory调用doResolveDependency方法找到并注入bean或者value值

CommonAnnotationBeanPostProcess.class

  可以处理@Resource、@PostConstruct、@PreDestory

  如何注册:context.registerBean(xxx.class);

ConfigurationPropertiesBindingPostPrecessor

  可以处理ConfigurationProperties

  如何注册:xxx.register(context.getDefaultListableBeanFactory());

扩展:

  如果@Value("${xx.xx}")中被解析成了 字符串"xx.xx", 那么beanFactory可能缺少一个对 ${} 的解析器

  // 对 ${} 的解析器

  -->  beanFactory.addEmbeddedValueResolver(new StandardEnvironment::resolvePlaceholders);

   

 

  

 

posted @ 2022-10-25 15:04  小肥糕  阅读(169)  评论(0)    收藏  举报