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 @   小肥糕  阅读(134)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示