SpringBoot

问题是:我自定义了一些beanPostProcessor,重写了postProcessBeforeInitialization方法,目的是判断bean的类型,注册到自定义的监听器容器中去,但是我在源码中打断点时,遍历到我自定义的监听器时,发现需要的beanPostProcessor不存在,导致监听器无法注册。

img

img


自定义的Processor

这个问题可能是由于您自定义的BeanPostProcessor没有被正确注册到Spring容器中导致的。您需要确保该BeanPostProcessor被正确地注册到Spring容器中。

您可以尝试使用@Component注解或者@Bean注解来将自定义的BeanPostProcessor注入到Spring容器中。例如:

@Component
public class MyBeanPostProcessor implements BeanPostProcessor {
   //...
}

或者在配置类中使用@Bean注解:

@Configuration
public class AppConfig {
    @Bean
    public MyBeanPostProcessor myBeanPostProcessor() {
        return new MyBeanPostProcessor();
}

如果您已经正确地注册了自定义的BeanPostProcessor,那么可能是BeanPostProcessor的加载顺序的问题。您可以在自定义的BeanPostProcessor类上添加@Order注解来指定其加载顺序,确保该BeanPostProcessor在需要它的其他Bean之前被加载。

conditionOnBean可能会导致翻车,这个配置类建议通过spring.factories文件去注入