注意点
ProceedingJoinPoint point
代码
@Component
@Slf4j
@Aspect
public class ManageLoginAop {
private static final String MANAGE_LOGIN_JSP = "/finance/manage/login";
// private static final String LOGIN_URL = CTXCOMPANY_PATH;
@Pointcut(value = "@within(com.ld.aop.annotation.ManageLogin)||@annotation(com.ld.aop.annotation.ManageLogin)")
public void cutManageLoginService() {
}
@Around("cutManageLoginService()")
public Object ManageLoginService(ProceedingJoinPoint point) throws Throwable {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
MethodSignature signature = (MethodSignature) point.getSignature();
Method method = signature.getMethod();
ManageLogin manageLogin = method.getAnnotation(ManageLogin.class);
if (manageLogin == null) { // 那么获取类上的注解
// 获取类上的注解
manageLogin = point.getTarget().getClass().getAnnotation(ManageLogin.class);
if (manageLogin == null) {
// 获取接口上的注解
for (Class<?> cls : point.getClass().getInterfaces()) {
manageLogin = cls.getAnnotation(ManageLogin.class);
if (manageLogin != null) {
break;
}
}
}
}
}