我们的项目中有多个模块。我已经为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会有什么问题。
1条答案
按热度按时间oxcyiej71#
我可以解决这个问题。问题出在@configuration class上。1.jar和2.jar都有@configuration类。我必须从1.jar的@configuration class中的2.jar导入@configuration class。现在我可以看到beanpostprocessor方法也被调用用于在1.jar中创建的bean。。