温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot如何新建aop切面

发布时间:2021-09-29 17:33:56 来源:亿速云 阅读:163 作者:柒染 栏目:大数据

springboot如何新建aop切面,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。


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@Componentpublic 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;
@RestControllerpublic class TestController {
/**     * 测试被切面的方法     * @return     */    @RequestMapping("test/testAspect")    public String testAspect(){System.out.println("in method");return "OK";    }}
           

结果输出:
springboot如何新建aop切面

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

看完上述内容,你们掌握springboot如何新建aop切面的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI