gpt4 book ai didi

java - Spring - 根据限定符值动态注入(inject)

转载 作者:太空宇宙 更新时间:2023-11-04 12:35:04 25 4
gpt4 key购买 nike

在 Weld 中,我可以执行以下操作来从某个源动态注入(inject)配置值:

@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 注释的字段注入(inject)自定义值。

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

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

最佳答案

Spring 有InjectionPoint类(class)。问题是你的 @ConfigValue 注释不应该有 Qualifier注解。然后您可以使用单一方法来生成各种值。

但是,如果您选择在 @ConfigValue 注释上使用 @Qualifier,那么您将必须为 @ConfigValue 的每个值创建多个生成方法。不过,我似乎没有遇到过任何与 @Nonbinding 等效的东西。

我已经针对用户对象而不是字符串测试了它。

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

关于java - Spring - 根据限定符值动态注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37409555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com