从自定义注释中读取属性

时间:2014-06-22 19:50:18

标签: java spring spring-aop

我有Aspect这样的注释

@Target(value = { ElementType.METHOD, ElementType.TYPE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface LoggerExecute {
    public String action(); 
}

所以我可以将注释放在我想记录的函数上。例如:

@RequestMapping(....)
@LoggerExecute(action = "Logging submitting data")
public ModelAndView submitData(...) {
    ....
}

现在我有一个eventLogs.properties,其中包含位于资源文件夹中的所有操作文本。从.properties注释中读取LoggerExecute文件中的键的简便方法是什么?对于这种情况,注入环境变量或覆盖某些类似乎太多了

1 个答案:

答案 0 :(得分:1)

注释属性值必须是常量表达式。因此,你不能做像

这样的事情
@LoggerExecute(action = loadFromProperties(someKey))

您可以做的是在注释中创建和使用String键值

@LoggerExecute(action = "myapp.action.submit.data")

然后,在您的建议中,检索注释,在属性文件中查找action值,然后使用它。