Бин доступа, созданный методом @Produces в расширении CDI - PullRequest
0 голосов
/ 19 января 2019

У меня есть следующий класс (который будет расширен позже):

@Getter
@Setter
@Builder
public class KafkaConfig {
    private String bootstrapServer;
}

И бин со следующим методом:

    @Produces
    public KafkaConfig kafkaConfig() {
        return KafkaConfig.builder().bootstrapServer("localhost:9092").build();
    }

Теперь у меня есть CDIрасширение, которое имеет следующий метод:

public <X> void processInjectionTarget(@Observes ProcessInjectionTarget<X> pit){}

, где я хочу получить доступ к бину KafkaConfig, который был произведен выше.Когда я пытаюсь использовать 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);
    }

Каков наилучший способ доступа к KafkaConfig в моем расширении CDI?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...