【发布时间】:2017-03-21 18:31:16
【问题描述】:
我以我对 Java 反射和 AOP 的有限知识提出这个问题。
背景:
我在我的 Java 7 应用程序中使用基于注解的建议。为了进一步获得我需要在我的建议中使用的方法参数,我正在使用 spring EL。请参见以下示例: 在第一个示例中,我想使用第二个参数来完成我的工作,而在第二个示例中,我使用 POJO 并希望使用它的“id”字段。
@MyAnnotation(param = "args[1]")
public void someMethod(int param1, String param2) {
return null;
}
@MyAnnotation(param = "args[0].id")
public void someMethod(SomeObject someObject) {
return null;
}
但我真正想要的是,在我的 AOP 中获得参数名称。这样我就可以使用 @MyAnnotation(param = "param1") 或 @MyAnnotation(param = "someObject.id") 代替。
据我所知,您无法使用反射获取参数名称。但是最近我遇到了 Spring 缓存抽象(link),我看到:
@Cacheable(cacheNames="books", key="#isbn")
public Book findBook(ISBN isbn, boolean checkWarehouse, boolean includeUsed)
有人可以在这里说明一下,我如何实现类似的行为。
【问题讨论】:
标签: reflection annotations aop spring-el