在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注释的所有字段注入自定义值。
我意识到这一点:https://msdn.microsoft.com/en-us/library/system.windows.data.compositecollection(v=vs.110).aspx
然而,对于看似简单的问题,这是一个非常复杂的解决方案。我想知道是否有更简单的解决方案......
答案 0 :(得分:0)
Spring有InjectionPoint课程。问题是你的@ConfigValue注释不应该有Qualifier注释。然后,您可以使用单个方法生成各种值。
但是,如果您选择在@ConfigValue注释上使用@Qualifier,则必须为@ConfigValue的每个值设置多个生成方法。我似乎没有遇到任何与@Nonbinding相同的东西。
我已经为用户对象测试了这个,而不是String。
PS:另一种方法是让一个"定义"注释和一个非定义的"注射点注释,以满足您的需求。