postprocessafterinitialization()并不是只为一个jar中的bean调用的

kh212irz  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(375)

我们的项目中有多个模块。我已经为beanpostprocessor引入了impl类,并期望为产品中每个模块的bean调用postprocessafterinitialization()方法。除了一个jar里的所有豆子外,它的工作原理是相似的。
我在2.jar里介绍了小鬼

@Component
public class RBACCheckingBeanPostProcessor implements BeanPostProcessor, PriorityOrdered, BeanClassLoaderAware
{
    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException
    {}
}

还有另一个module 1.jar,其中有controller类

@RestController
@RequestMapping(value = "/epn", produces = "application/json")
public class EPNController
{
}

还有其他jar具有控制器类。
问题是epncontrollerbean和1.jar中的所有其他bean都没有调用postprocessafterinitialization。但我可以看到,还有来自其他jar(包括2.jar)的控制器类的回调。
为了排除故障,我将rbaccheckingbeanpostprocessor设置为1.jar,现在可以看到epncontrollerbean的回调。
我不明白如果我在2.jar中有beanpostprocessor会有什么问题。

oxcyiej7

oxcyiej71#

我可以解决这个问题。问题出在@configuration class上。1.jar和2.jar都有@configuration类。我必须从1.jar的@configuration class中的2.jar导入@configuration class。现在我可以看到beanpostprocessor方法也被调用用于在1.jar中创建的bean。。

相关问题