动态CDI注入@Named

时间:2019-05-03 22:05:50

标签: cdi

我想基于配置或环境变量注入@Named bean(或通过不同方式实现相同目标)。例如我要替换

@Inject
@Named("myredBean")

使用

@Inject
@Named("{bean.color}")

或类似...

我没有使用Spring,所以我宁愿使用非Spring解决方案!我正在使用Quarkus

1 个答案:

答案 0 :(得分:3)

以稍微不同的方式实现相同目标的一种简单方法是,在生成CDI bean时而不是根据我的问题进行注入时读取环境变量

@ConfigProperty(name = "bean.colour")
private String colour;



@Produces
public ColourBean create() {
        LOGGER.info("Producing a ColourBean for: {}",colour);



    switch(Colour.valueOf(colour)){

        case RED:
        case red:{
            return new RedBean();
       }
         ...

    }

}