这是注解代码:
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public @interface PreVisit {
String value();
}
在控制器@previsit(“@pv.hasaccess('')”中使用
@PreVisit("@pv.hasAccess('xxxxxx')")
@RequestMapping(value = "getUser")
public User getUser(Integer userId) {...some code...}
这是pv.hasaccess('')代码:
@Service("pv")
public class PageVisit{
public boolean hasAccess(String par){
//return false or true;
}
}
我的问题是:
在方面,如何在注解参数中获取方法并获取执行结果
这是方面文件代码:
@Aspect
@Component
public class PreVisitAspect {
@Around("@annotation(PreVisit)")
public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
//How do I get the result of the method execution in the annotation parameter here
//boolean pvResult=@pv.hasAccess('xxxxxx'); pvResult=false or true
//Do something use the pvResult
}
}
2条答案
按热度按时间0md85ypi1#
我是提问者
我使用java反射解决了这个问题,如下所示:
tks@karthikeyan vaithlingam公司
qmb5sa222#
您可以选择第二个参数类型
PreVisit
您可以访问方法中的注解值。如果你想使用
PageVisit#hasAccess(String)
,然后注入PageVisit
并调用方法。为此,必须修改控制器方法,如下所示。
你的容貌会很好。