Spring BeanFactoryPostProcessor

在通过BeanFactoryPostProcessor来手动干预springbean加载状态时,有两点需要注意:

  1. 是否需要实现PriorityOrdered接口。
    spring处理BeanFactoryPostProcessor类型的bean,主要是通过AbstractApplicationContext中的invokeBeanFactoryPostProcessors来处理,主要代码如下:


    image.png

    实现了PriorityOrdered接口的Processor会放在第一优先级队列中执行,并且通过设置优先级,可以执行Processor的执行顺序(注意:Spring自带的Processor都被默认设置了最低优先级)。

  2. 是否需要初始化bean
    ListableBeanFactory中有个重要的接口getBeanNamesForTypes,该接口支持两种传参类型,若不希望在调用接口后会触发bean的初始化工作,需使用String[] getBeanNamesForType(Class type, boolean includeNonSingletons, boolean allowEagerInit),并将最后的allowEagerInit参数置为true。

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 44,948评论 6 345
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 132,349评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 30,767评论 18 399
  • 第一:移动互联网的推广是重点 移动互联网的趋势已经势不可挡,所以我们要在移动端的推广加大力气了!那么移动端最大的窗...
    包云东阅读 158评论 0 2
  • 小川叔,你好!这是我第一次给你写信,向你求救,现在的我真的很无措!说说我的情况吧!我12年参加实习工作,13年毕业...
    小川叔阅读 334评论 2 4