官宣
从今天开始每天更新springboot基础知识,从基础到做项目,在这个过程中我会记录我的点滴,希望一起进步~
AOP是什么
Aop是一种切面思想,我感觉确切的说他不是一类技术而是一种思想,帮助我减少代码冗余
Aop功能
- 切点:找一个点击破
- 切面:对于某一方面去攻破
切面又分为前置拦截,后置拦截,运行之后拦截,还有很多种,不一一说了
Aop 代码举例
这次我们实现的是统一切割controller层的前置和后置和运行之后
切点配置,切点使用的是@Pointcut ,里面是切割特制的类下的所有方法
/**
* 切点配置
*/
@Pointcut("execution(public * com.imooc.controller.GirlController.*(..))")
public void log(){
}
@Before指的是程序运行之前进行切割
/**
* 切面配置:前置拦截
*/
@Before("log()")
public void beforeLog(){
logger.info("前置拦截");
}
@After指的是后置切割,他在前置切割与后置运行切割运行之间
/**
* 切面配置:后置拦截
*/
@After("log()")
public void afterLog(){
logger.info("后置拦截");
}
@AfterReturning 指的是程序运行完成之后进行切割
/**
* 切面配置:运行之后拦截
*/
@AfterReturning("log()")
public void afterReLog(){
logger.info("运行之后拦截");
}
}
采坑
在运行代码的时候他一直不切割controller方法我当时就特别郁闷.后来才知道原来必须方法启动层下面或者是子类才可以
有的时候当我们想调用某一个类的时候,当时没有加@component的时候,这个是就会提示我们无法调用,原因就是因为@component的作用就是让容器去管理和这个类,然后进行实例化,set和get