aop可以用来做日志,权限认证,事务等。
springboot加入aop依赖并更新依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
新建切面类
@Aspect切面,定义切面类,定义切入点和通知
@Aspect
@Component
public class LoginAspect {
/**
*定义切入点 切入点为LoginController中的方法
*/
@Pointcut("execution(public * com.four.controller.LoginController.*(..))")
public void loginAspect(){
}
/**
* logincontroller方法()执行前执行的通知
* */
@Before("loginAspect()")
public void before(){
System.out.println("要登录了");
}
/**
* 执行之后执行的通知 (返回通知和异常通知的执行)
* */
@After("loginAspect()")
public void After(){
System.out.println("登录执行了");
}
/**
* 执行之后执行(返回通知)
* */
@AfterReturning("loginAspect()")
public void AfterReturn(){
System.out.println("登录执行了返回通知 ! ");
}
/**
* 执行之后的通知(异常通知)
* */
@AfterThrowing("loginAspect()")
public void AfterThrowing(){
System.out.println("登录异常: ? ? ?");
}
}
LoginController类:
@Controller
@RequestMapping("/login")
public class LoginController {
@Autowired
UserMapper userMapper;
@Resource
RedisUtil redisUtil;
@ResponseBody
@RequestMapping(value = "/login")
public String login(@RequestParam(name = "userName") String userName, @RequestParam(name = "passWord") String passWord, HttpSession session){
System.out.println(userName+passWord);
User user = userMapper.selectUserByName(userName);
System.out.println("ss"+user.getUseraddress());
if(user != null && user.getUserpassword().equals(passWord)){
session.setAttribute("loginUser",user);
String userId_5 = (String) redisUtil.get("userId_5");
System.out.println("userId5 "+userId_5);
return "true";
}
return "false";
}
}
执行LoginController中的login()时会执行切面类里面的方法