问题描述
我们的项目中有多个模块。我已经为BeanPostProcessor引入了impl类,并期望将为产品中每个模块中的bean调用postProcessAfterInitialization()方法。除了一个罐中的所有豆子以外,它的工作方式相似。
我在2.jar中介绍了imp
@Component
public class RBACCheckingBeanPostProcessor implements BeanPostProcessor,PriorityOrdered,BeanClassLoaderAware
{
@Override
public Object postProcessAfterInitialization(Object bean,String beanName) throws BeansException
{}
}
还有另一个模块1.jar,其中有控制器类
@RestController
@RequestMapping(value = "/epn",produces = "application/json")
public class EPNController
{
}
还有其他具有控制器类的jar。
问题在于EPNController bean和1.jar中的所有其他bean没有调用postProcessAfterInitialization。但是我可以看到,从其他jars到2.jar的控制器类中都有回调。
出于故障排除的目的,我将RBACCheckingBeanPostProcessor的模式设置为1.jar,现在我可以看到EPNController bean的回调。
我不明白如果我在2.jar中安装了BeanPostProcessor,那可能是什么问题。
解决方法
我可以解决问题。问题出在@Configuration类。 1.jar和2.jar都具有@Configuration类。我必须从1.jar的@Configuration类中的2.jar导入@Configuration类。 现在,我可以看到BeanPostProcessor方法也被在1.jar中创建的bean调用。