拥有属性文件和必要的context:properties-placeholder
配置......
someproperty=somevalue
在Spring bean中我们可以:
@Value("${someproperty}")
private String someProperty;
其中someProperties值为"somevalue"
。
我想创建一个新的注释@Refreshable
,其中@Value
作为元注释,因此它的行为与直接使用@Value
的行为相同。由于@Value
需要一个值,我需要硬编码"default"
,希望@Refreshable's value()
覆盖它:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Value("default")
public @interface Refreshable {
String value();
}
然后当我在bean中使用新注释时,我希望它能够正常工作,注入声明的值"somevalue"
:
@Refreshable("${someproperty}")
private String someProperty;
但是我没有得到${someproperty}
的值,而是“默认”。想法?
答案 0 :(得分:0)
它已在4.3.0-BUILD-SNAPSHOT中解决。要覆盖@ Value的值,必须使用@AliasFor
:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Value("")
public @interface Refreshable {
@AliasFor(annotation=Value.class, attribute="value")
String value();
}