java - 从自定义注释中读取属性

标签 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,其中包含该操作的所有文本,位于资源文件夹中。直接从 LoggerExecute 注释读取 .properties 文件中的键的简单方法是什么。对于这种情况,注入(inject)环境变量或覆盖某些类似乎太多了

最佳答案

注释属性值必须是常量表达式。因此,你不能做类似的事情

@LoggerExecute(action = loadFromProperties(someKey))

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

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

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

关于java - 从自定义注释中读取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24355109/

相关文章:

spring - 使用 spring-webflux WebClient 测试虚拟时间的问题

java - 如何在课后回滚事务(使用 TestNg 和 Spring)?

java - 在Spring中,advisor和aspect有什么区别?

java - Spring AOP 在 tomcat 8 上的 Web 应用程序中不起作用

jpa - Aspectj 编译时基于编织的事务不起作用(来自 WebService 调用的 JPA)

java - 比较多个子串

java - 无法在 IntelliJ IDEA 13 社区版中创建 java 项目

java - 使用 java.util.prefs.Preferences 处理 Windows 注册表

java - GridLayout 上的 JButtons - MineSweeper

java - ActiveMQ分布式事务+扩展