我有以下课程(稍后将进行扩展):
@Getter
@Setter
@Builder
public class KafkaConfig {
private String bootstrapServer;
}
和具有以下方法的bean:
@Produces
public KafkaConfig kafkaConfig() {
return KafkaConfig.builder().bootstrapServer("localhost:9092").build();
}
现在我有一个CDI扩展,它具有以下方法:
public <X> void processInjectionTarget(@Observes ProcessInjectionTarget<X> pit){}
我要访问上面产生的KafkaConfig
bean的位置。当我尝试使用BeanManager时(如下所示),我莫名其妙地遇到了StackOverflowError。
private KafkaConfig resolveKafkaConfig(){
BeanManager bm = CDI.current().getBeanManager();
Bean<KafkaConfig> bean = (Bean<KafkaConfig>) bm.getBeans(KafkaConfig.class).iterator().next();
CreationalContext<KafkaConfig> ctx = bm.createCreationalContext(bean);
return (KafkaConfig) bm.getReference(bean, KafkaConfig.class, ctx);
}
在我的CDI扩展程序中访问KafkaConfig
的最佳方法是什么?