春季AOP:如何获得建议方法的注释
2022-09-04 05:10:51
我想用Spring/AOP和注释来实现声明性安全性。正如您在下一个代码示例中看到的那样,我有带有参数“allowedRoles”的受限注释,用于定义允许谁执行建议的方法。
@Restricted(allowedRoles="jira-administrators")
public void setPassword(...) throws UserMgmtException {
// set password code
...
}
现在,问题是在我的建议中,我无法访问定义的注释:
public Object checkPermission(ProceedingJoinPoint pjp) throws Throwable {
Signature signature = pjp.getSignature();
System.out.println("Allowed:" + rolesAllowedForJoinPoint(pjp));
...
}
private Restricted rolesAllowedForJoinPoint(ProceedingJoinPoint thisJoinPoint)
{
MethodSignature methodSignature = (MethodSignature) thisJoinPoint.getSignature();
Method targetMethod = methodSignature.getMethod();
return targetMethod.getAnnotation(Restricted.class);
}
上述方法始终返回 null(根本没有找到任何注释)。有没有一个简单的解决方案?
我读到了一些关于使用AspectJ代理的内容,但我宁愿不使用此代理。