通过CDI扩展中的@Produces方法创建的Access bean

时间:2019-01-19 14:41:38

标签: cdi

我有以下课程(稍后将进行扩展):

@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的最佳方法是什么?

0 个答案:

没有答案