记录日志,我需要用户信息,但是如果我在没有登录的情况下就获取用户信息,会抛空指针异常,所以,为了避免,我设想在登录前不执行用户日志记录。
所以我的解决思路是在切点表达式中排除登录注册一写不需要用户信息的方法。
这是开始写的代码
//注意方法里有参无参
@Pointcut("execution(* com.cn.hnust.service.*.*(..)) " +
"&& !execution(* com.cn.hnust.service.UserService.login())"+
"&& !execution(* com.cn.hnust.service.UserService.register())"+
"&& !execution(* com.cn.hnust.service.UserService.forgetPassword())"
)
public void myPoint(){}
我的登录方法是有参的,账号和密码,但是开始时没注意,所以一致没找到问题,为什么没生效,找了很久才知道,在方法中加入两个点就好了,有参无参都找。
修改之后的代码
//注意方法里有参无参
@Pointcut("execution(* com.cn.hnust.service.*.*(..)) " +
"&& !execution(* com.cn.hnust.service.UserService.login(..))"+
"&& !execution(* com.cn.hnust.service.UserService.register(..))"+
"&& !execution(* com.cn.hnust.service.UserService.forgetPassword(..))"
)
public void myPoint(){}