崛起于SpringBoot2.X + 200秒掌握Aop(67)

原创
2019/12/23 10:11
阅读数 508

《SpringBoot2.X心法总纲》 

理解aop

aop就是横向切,那怎么理解呢?我举个例子,现在大学生毕业都要经历幼儿园、小学、初中、高中、大学五个阶段,而这五个阶段就是人生的纵向梯度,但是我们在每一个阶段比如小学又或者大学,该具体做一些什么,这些具体内容就是横向切面,也就是Aop的主要功能。

1、pom依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>

添加依赖之后,默认增加了@EnableAspectJAutoProxy

2、配置

public class AopConfig {

    private Logger logger = LoggerFactory.getLogger(AopConfig.class);
    /**
     * 定义切入点,切入点为com.example.demo.aop.AopController中的所有函数
     * 通过@Pointcut注解声明频繁使用的切点表达式
     */
    @Pointcut("execution(public * com.springboot.aop.controller.AopController.*(..)))")
    public void BrokerAspect(){
    }

    /**
     *  在连接点执行之前执行
     */
    @Before("BrokerAspect()")
    public void doBefore(){
        logger.info("Before: 进入test1方法之前");
    }

    /**
     * 在连接点执行之后执行(返回通知和异常通知的异常)
     */
    @After("BrokerAspect()")
    public void doAfter(){
        logger.info("After: 退出test1方法之后");
    }

    /**
     * 在连接点执行之后执行的通知(返回通知)
     */
    @AfterReturning("BrokerAspect()")
    public void doAfterReturning(){
        logger.info("AfterReturning: 返回通知");
    }

    /**
     * 在连接点执行之后执行的通知(异常通知)
     */
    @AfterThrowing("BrokerAspect()")
    public void doAfterThrowing(){
        logger.info("AfterThrowing: 异常通知");
    }
}

3、controller层

@RestController
@RequestMapping(value = "/aop")
public class AopController {
    private Logger logger = LoggerFactory.getLogger(AopController.class);

    @GetMapping(value = "test1")
    public String test1(){
        logger.info("test1方法进行中...");
        return "success";
    }
}

4、启动测试

访问路径:http://localhost:8089/aop/test1

如图:

所以我们大概清楚了Aop是干嘛的,而开发过程中,我们主要还是用它来操作拦截、过滤,主要是事物等,还有就是接下来下一篇博客要讲实现主从分离,该选择数据库的主库还是从库,就是通过aop来实现的。

相关博客

什么是AOP 

Spring AOP SpringBoot集成

展开阅读全文
打赏
0
0 收藏
分享
加载中
加油哈哈哈
2019/12/26 09:07
回复
举报
现在是属于,初级,中级 ,高级,还是架构师呢?
2019/12/25 16:58
回复
举报
木九天博主
初级😕
2019/12/25 17:50
回复
举报
更多评论
打赏
3 评论
0 收藏
0
分享
返回顶部
顶部