SpringBoot图文教程5—SpringBoot 中使用Aop
有天上飞的概念,就要有落地的实现
- 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例
- 文章结尾配套自测面试题,学完技术自我测试更扎实
- 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍
大哥大姐新年好,点赞转发不要少
SpringBoot 图文系列教程技术大纲
鹿老师的Java笔记
SpringBoot 图文教程系列文章目录
- SpringBoot图文教程1「概念+案例 思维导图」「基础篇上」
- SpringBoot图文教程2—日志的使用「logback」「log4j」
- SpringBoot图文教程3—「‘初恋’情结」集成Jsp
- SpringBoot图文教程4—SpringBoot 实现文件上传下载
前言
在Spring中,不管是学习还是面试,有两个点是永远绕不过去的,一个是IOC,另一个就是Aop,Spring中使用Aop是非常简单的,可以通过xml和注解两种方式写出aop的代码,那么在SpringBoot中有什么变化吗?
在SpringBoot中使用aop实际上没有太多的变化,关于SpringBoot实际上就是对Spring和SpringMVC的进一步封装,因此在 SpringBoot 中同样支持Spring框架中AOP切面编程,不过在SpringBoot中为了快速开发仅仅提供了注解方式的切面编程。
SpringBoot 注解式 aop 的使用
本文所有的内容,将会在下面的demo上进行操作。 请去Git仓库下载:https://gitee.com/bingqilinpeishenme/Lu-JavaNodes
1.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
2.aop相关注解讲解
/**
@Aspect 用来类上,代表这个类是一个切面
@Before 用在方法上代表这个方法是一个前置通知方法
@After 用在方法上代表这个方法是一个后置通知方法
@Around 用在方法上代表这个方法是一个环绕的方法
@Around 用在方法上代表这个方法是一个环绕的方法
@order(数字)用在类上,数字越小进入越早
**/
/**
环绕,前置,后置全部存在
先进入环绕,在进入前置,离开前置,离开环绕,进入后置,离开后置
**/
前置切面
/**
* @Aspect 用来类上,代表这个类是一个切面
* @Component 用来告诉SpringBoot 给当前类创建对象 等价于@Service
*/
@Aspect
@Component
public class MyAspect {
//@Before 用在方法上代表这个方法是一个前置通知方法 注解的参数是切点表达式
@Before("execution(* com.lu.service.*.*(..))")
public void before(JoinPoint joinPoint){
System.out.println("前置通知");
//JoinPoint 通过该对象可以获取到被切入的对象的信息
joinPoint.getTarget();//目标对象
joinPoint.getSignature();//方法签名
joinPoint.getArgs();//方法参数
}
}
后置切面
@Aspect
@Component
public class MyAspect {
@After("execution(* com.lu.service.*.*(..))")
public void before(JoinPoint joinPoint){
System.out.println("后置通知");
joinPoint.getTarget();//目标对象
joinPoint.getSignature();//方法签名
joinPoint.getArgs();//方法参数
}
}
注意: 前置通知和后置通知都没有返回值,方法参数都为joinpoint
环绕切面
@Aspect
@Component
public class MyAspect {
@Around("execution(* com.lu.service.*.*(..))")
public Object before(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
System.out.println("进入环绕通知");
proceedingJoinPoint.getTarget();//目标对象
proceedingJoinPoint.getSignature();//方法签名
proceedingJoinPoint.getArgs();//方法参数
Object proceed = proceedingJoinPoint.proceed();//放行执行目标方法 这一步必须存在
System.out.println("目标方法执行之后回到环绕通知");
return proceed;//返回目标方法返回值
}
}
注意: 环绕通知存在返回值,参数为ProceedingJoinPoint
- 如果不执行放行,不会执行目标方法
- 一旦放行必须将目标方法的返回值返回,否则调用者无法接受返回数据
总结
以上就是SpringBoot中aop的简单使用,今天实际上只是简单的测试了aop的Api,关于aop的应用,例如:通过Aop记录日志信息,通过Aop操作redis缓存等实战应用,会在后续文章中写出。
恭喜你完成了本章的学习,为你鼓掌!如果本文对你有帮助,请帮忙点赞,评论,转发,这对作者很重要,谢谢。
让我们再次回顾本文的学习目标
- 掌握SpringBoot中aop的使用
要掌握SpringBoot更多的用法,请持续关注本系列教程。
下面体贴的我给朋友萌还准备了一些 自测面试题和项目案例,希望你能够成热打铁,将知识夯扎实。
上期自测面试题答案
见面试题集锦 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes
自测面试题(答案见下期)
- 注解式Aop的常用注解有哪些
上期自测实现项目小案例答案
见码云仓库 https://gitee.com/bingqilinpeishenme/Lu-JavaNodes
自测实现项目小案例(答案见下期)
本次需求:
练习文中demo
求关注,求点赞,求转发
SpringBoot图文教程5—SpringBoot 中使用Aop的更多相关文章
- SpringBoot图文教程6—SpringBoot中过滤器的使用
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文系列教程技术大纲 鹿老师的Java笔记 SpringBo ...
- SpringBoot图文教程7—SpringBoot拦截器的使用姿势这都有
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程8 — SpringBoot集成MBG「代码生成器」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程9—SpringBoot 导入导出 Excel 「Apache Poi」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程14—SpringBoot集成EasyExcel「上」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程4—SpringBoot 实现文件上传下载
有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 文章结尾配套自测面试题,学完技术自我测试更扎实 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例 ...
- SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程11—从此不写mapper文件「SpringBoot集成MybatisPlus」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- SpringBoot图文教程12—SpringData Jpa的基本使用
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
随机推荐
- 《【面试突击】— Redis篇》--Redis都有哪些数据类型?分别在哪些场景下使用比较合适?
能坚持别人不能坚持的,才能拥有别人不能拥有的.关注编程大道公众号,让我们一同坚持心中所想,一起成长!! <[面试突击]— Redis篇>--Redis都有哪些数据类型?分别在哪些场景下使用 ...
- cogs 728. [网络流24题] 最小路径覆盖问题 匈牙利算法
728. [网络流24题] 最小路径覆盖问题 ★★★☆ 输入文件:path3.in 输出文件:path3.out 评测插件时间限制:1 s 内存限制:128 MB 算法实现题8-3 最 ...
- 关于将vs项目推到GitHub上遇到的问题
想整理下项目,然后通过vs推到github下. 1.在vs上创建好了一个程序.点中解决方案-->右键-->将项目加入代码库. 2.在github上创建好一个仓库,然后复制下https 3. ...
- 安装xpath helper
1.下载 版本是:2.02的 链接:https://pan.baidu.com/s/1YdyTbWElL904EMQ-9Ougnw 提取码:bxxa 2.无效安装的解决方案 参考链接:https:// ...
- (树形DP入门题)Anniversary party(没有上司的舞会) HDU - 1520
题意: 有个公司要举行一场晚会.为了让到会的每个人不受他的直接上司约束而能玩得开心,公司领导决定:如果邀请了某个人,那么一定不会再邀请他的直接的上司,但该人的上司的上司,上司的上司的上司等都可以邀请. ...
- 2015年3月26日 - Javascript MVC 框架DerbyJS DerbyJS 是一个 MVC 框架,帮助编写实时,交互的应用。
2015年3月26日 - Javascript MVC 框架DerbyJS DerbyJS 是一个 MVC 框架,帮助编写实时,交互的应用.
- RainbowPlan-Alpha版本发布1
博客介绍 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience/ 这个作业要求在哪里 https:// ...
- c#数字图像处理(十一)图像旋转
如果平面上的点绕原点逆时针旋转θº,则其坐标变换公式为: x'=xcosθ+ysinθ y=-xsinθ+ycosθ 其中,(x, y)为原图坐标,(x’, y’)为旋转后的坐标.它的逆变换公式为 ...
- jQuery-01-jQuery选择器及元素操作
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'system.sysuser', bu
问题:已经在settings.py文件中注册过app仍旧提示没有安装,并且使用makegirations命令时会抛出如下异常. ValueError: The field admin.LogEntry ...