2016-09-02 164 views
0

如何在注释内获取属性值。例如我有一个注释注释中的弹簧属性值

@GetMyValue(value1="Val1",intVal=10) 

现在我想让“Val1”和10来自属性文件。我试过

@GetMyValue(value1="${test.value}",intVal="${test.int.value}") 

哪个不行。

我明白我可以使用

@Value("${test.value}") 
String value; 

@Value("${test.int.value}") 
int intValue; 

,我不希望出现这种情况,它必须是一个注释中。有什么建议么?

回答

0

在Spring @Value中,替换占位符不是在注释中完成,而是在检查bean时由框架完成。

  • DefaultListableBeanFactory#doResolveDependency
  • DefaultListableBeanFactory#resolveEmbeddedValue
  • org.springframework.util.StringValueResolver

所以,你必须为 “手动” 得到注解value1和INTVAL(这应该是在你的注释字符串)并根据您的属性文件解决它们。

0

这需要涉及更多的代码工作,我认为,但也许你可以有一个解决方法,例如,不硬编码值为@GetMyValue annonation,只需在配置bean中引入两个参数。

private String stringVal; 
private int intVal; 

然后你可以在你的annonation中使用这两个参数spEL。