AOP简单使用
aop意为面向切面编程,它是spring框架中的一个重要内容。它通过给程序定义一个切入点,然后在其前后切入不同的执行内容。
它不会破坏原来的程序逻辑。
通常用于:日志记录、事务管理、安全检查和资源控制。
现在来看一个使用例子:一次业务流可以分为四步,请求(前端)——接收(Contorller)——处理(Services)——(Dao)——返回。
首先:添加依赖
org.springframework.boot spring-boot-starter-aop
接着:编写aop实验类
@Aspect//标注其为一个aop
@Component//持久层、业务层和控制层分别採用 @Repository、@Service 和 @Controller 对分层中的类进行凝视,而用 @Component 对那些比較中立的类进行凝视
public class LogAspect {
private final Logger logger= LoggerFactory.getLogger(this.getClass());
@Pointcut("execution(* com.gyy.springbootadvanced.web.LogTextApi.log(..))")
public void log(){
}
@Before("log()")
public void doBefore(){
logger.info("----------------doBefore1______________");
}
@After("log()")
public void doAfter(){
logger.info("----------------doAfter2_________________");
}
@AfterReturning(returning="result",pointcut="log()")
public void doAfterReturn(Object result){
logger.info("----------------doAfterReturn______________内容:{}",result);
}
}
另附log()方法,这个controller类里写一些控制台输出即可,没有规定。
@RestController
public class LogTextApi {
private final Logger logger= LoggerFactory.getLogger(this.getClass());
@GetMapping("/log")
public String log(){
logger.info("info___log");
logger.warn("warn___log");
logger.error("error___log");
logger.debug("debug___log");
logger.trace("trace___log");
return "logtext";
}
}
最后运行程序,得到控制台输出结果如下。



