【发布时间】:2021-11-02 05:07:08
【问题描述】:
我正在为应用程序开发一个外部组件,其中包含将 Jersey 客户端过滤器注入延迟加载客户端的功能。我已经实现了一个 BeanPostProcessor 来做这个:
public class ClientFilterInjector implements BeanPostProcessor, Ordered {
private ClientTraceInterceptor clientTraceInterceptor;
public ClientFilterInjector(ClientTraceInterceptor clientTraceInterceptor) {
this.clientTraceInterceptor = clientTraceInterceptor;
}
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) {
if(bean instanceof JerseyWebTarget) {
((JerseyWebTarget) bean).register(clientTraceInterceptor);
}
return bean;
}
@Override
public int getOrder() {
return Ordered.LOWEST_PRECEDENCE;
}
}
但是,Spring Boot 显然会自动扫描 BeanPostProcessor 实现,无论它们是否被注释或具有 bean 创建方法。因此,它搞砸了在应用程序中创建 bean 的顺序。有没有办法推迟 BeanPostProcessor 的实例化?
【问题讨论】:
标签: java spring spring-boot