繁体   English   中英

Spring - 基于限定符值动态注入

[英]Spring - Dynamically injecting based on qualifier value

在Weld中,我可以执行以下操作以从某些源动态注入配置值:

@Qualifier
@Retention(RetentionPolicy.RUNTIME)
@Target({ TYPE, METHOD, FIELD, PARAMETER })
public static @interface ConfigValue {

    @Nonbinding
    String value();
}

@Produces
@Dependent
@ConfigValue("")
public String stringValue(InjectionPoint ip) {
    ConfigValue configValue = ip.getAnnotated().getAnnotation(ConfigValue.class);
    return myConfigMap.get(configValue.value());
}

但是,等效的Spring会根据@ConfigValue注释的值进行匹配。

我希望Spring调用一个方法来允许我为@ConfigValue注释的所有字段注入自定义值。

我知道这个: http//joshlong.com/jl/blogPost/supporting_your_own_field_or_method_injection_annotation_processors_in_spring.html

然而,对于看似简单的问题,这是一个非常复杂的解决方案。 我想知道是否有更简单的解决方案......

Spring有InjectionPoint类。 问题是你的@ConfigValue注释不应该有限定符注释。 然后,您可以使用单个方法生成各种值。

但是,如果您选择在@ConfigValue注释上使用@Qualifier,则必须为@ConfigValue的每个值设置多个生成方法。 我似乎没有遇到任何与@Nonbinding相同的东西。

我已经测试了这个用户对象,而不是String。

PS:另一种方法是在注入点上有一个“定义”注释和一个“非定义”注释,以满足您的需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM