У меня есть следующий класс (который будет расширен позже):
@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?