前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot|springboot新建aop切面

springboot|springboot新建aop切面

作者头像
微笑的小小刀
发布2019-12-05 11:53:40
4690
发布2019-12-05 11:53:40
举报

本网站记录了最全的各种JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring的, Mybatis的等等各种,助力你从菜鸟到大牛,记得收藏哦~~ https://www.javastudy.cloud

springboot引入AOP

主要是分为以下几步:

  1. 引入相关的依赖
  2. 新建一个切面
  3. 编写相应的切点和通知

引入相关的依赖

除了web的包之外,还需要引一个aop相关的starter相关的包

compile group: 'org.springframework.boot', name: 'spring-boot-starter-aop', version: '2.2.0.RELEASE'

新建切面

通俗来讲,一个切面有两个部分组成 1是对哪些方法做修改,加强,注入等等,都是一个意思 2是对这些方法做什么样的修改,执行前,执行后,执行前后等等

/**
 * 声明一个切面,只用加一个@Aspect注解就可以了
 * 还有个注解@Component是声明这个类为Spring的bean
 */
@Aspect
@Component
public class TestAspect {

/**
     * 切面的组成部分之一,告诉程序要对哪些方法进行操作
     * 在本DEMO中直接指定了一个方法,推荐后续用注解的方式去找方法
     * 在现在注解盛行的时代,这样根据方法名去找方法的用处已经不多了
     * 更多的是通过某个注解去找到对应的方法,后续也会有DEMOb出来
     */
@Pointcut("execution(public * cloud.javastudy.demo.controller.TestController.testAspect(..))")
public void testPointcut(){}

/**
     * 对找到的方法进行修改
     * 有@Around,对方法执行前后进行修改
     * 有@Before, 在方法执行前进行修改
     * 有@After,  在方法执行后进行修改
     * 有@AfterReturning, 在方法返回后进行修改
     * 有@AfterThrowing, 在方法抛出异常后修改
     * 常用的是@Around,常用于对方法体加 Try-catch,对方法执行计时,对方法入参,返回做日志记录等等
     */
@Around("testPointcut()")
public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
        System.out.println("before pointcut");
        Object proceed = joinPoint.proceed();
        System.out.println("after pointcut");
return proceed;
    }
}

被测试的方法

package cloud.javastudy.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

/**
     * 测试被切面的方法
     * @return
     */
    @RequestMapping("test/testAspect")
    public String testAspect(){
System.out.println("in method");
return "OK";
    }
}

结果输出:

DEMO总评

AOP是spring的两大特性之一,相对比于以前spring用xml复杂的声明,在springboot中使用aop只用引一个依赖,新建一个切面类就可以解决了, 简单的demo很简单,真正使用还是要好好琢磨下,如在使用Around时,复杂的逻辑要记得新开一个子线程来处理,我就曾经在记录redis的key命中时,因为是没有异步记录,导致redis出奇的慢,加油吧少年!

DEMO下载

https://img.hacpai.com/file/2019/11/demoaop-7a8501c1.zip

可添加小刀微信获取源码

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java技术大本营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • springboot引入AOP
  • 引入相关的依赖
    • 新建切面
      • 被测试的方法
      • DEMO总评
      • DEMO下载
      相关产品与服务
      云数据库 Redis
      腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档