【发布时间】:2015-07-03 08:59:13
【问题描述】:
我正在尝试将值注入自定义注释,但 Spring 似乎没有进行评估。
这是我的注释:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnno {
String var1();
String var2();
}
这是我的带有注释的 Bean(它是在 Spring 配置文件中创建的):
public class MyClass {
@MyCustomAnno(var1 = "${some.property.one}",
var2 = "${some.property.two}")
public void someMethod() {
// do something here
}
}
这是我尝试使用传递到注释中的值的方面:
@Aspect
public class MyAop {
@Around(value="@annotation(myCustomAnno)",argNames="myCustomAnno")
public Object aroundMethod(MyCustomAnno myCustomAnno) {
int intVar1 = Integer.parseInt(myCustomAnno.var1());
int intVar2 = Integer.parseInt(myCustomAnno.var2());
// ....
}
}
在 around 方法中,我收到 NumberFormatException:对于输入字符串:${some.property.one}。这意味着 Spring 出于某种原因没有注入该值。
如果您想知道,在同一个类中,我可以执行正常的 @Value 注释,并且值会被正确注入:
@Value("${some.property.one}")
private propertyOne; // This works
是否可以做我想做的事,如果可以,怎么做?
【问题讨论】:
标签: spring dependency-injection annotations spring-aop