详述Spring AOP @Before,@After,@AfterReturning、@AfterThrowing和@Around

5 篇文章 0 订阅
订阅专栏

一、AOP的作用

当多个方法中出现重复的代码时,一般会将其提取为新的方法,然后通过调用这个新的方法以此简化代码
而spring aop就是专门做这样的工作的

二、怎么使用AOP

1、创建项目

我们可以创建一个AOP类,并添加@Aspect注解,在此之前需要引包aspectjweaver-1.8.10.jar;在app.xml文件的Namespaces中勾选aop,配置aop:aspectj-autoproxy标签,作用是自动对应到有@Aspect注解所标识的类。
举个例子,创建一个javaweb项目,项目结构如下
在这里插入图片描述
在这里插入图片描述
在IoC容器创建的同时,ComputerAOP对象和ComputerService对象也随之初始化,aop:aspectj-autoproxy查找到ComputerAOP类创建代理类和代理对象,@Before中的语句可以自动为该类下所有返回值类型为public int的方法提供代理,我们打印出此时掌管该类的类名发现是代理类
在这里插入图片描述
若将注解注释掉,打印结果为本类名,说明这些方法没有被代理
在这里插入图片描述

2、观察@Before、@After、@AfterReturning、@AfterThrowing的应用场合

在这里插入图片描述
结果为
在这里插入图片描述
说明@Before对应于方法开始执行之前;@After对应于方法结束;@AfterThrowing对应于抛出异常后;@AfterReturning在出现异常时不执行。
将被除数改为1,运行结果如下
在这里插入图片描述
结论:@AfterReturning是在返回成功时调用;@After是在方法结束之后、执行return之前调用

3、@Around:可以代替前四种

并且ProceedingJoinPoint对象可以调用getTarget()方法,获得被代理的对象
在这里插入图片描述
执行结果
在这里插入图片描述
pjp对象还可以调用proceed()来调用原方法,如下图
在这里插入图片描述

Spring AOP @Aspect 基本用法
02-10
1、@Aspect放在类头上,把这个类作为一个切面。 2、 @Pointcut放在方法头上,定义一个可被别的方法引用的切入点表达式。 3、5种通知。 3.1、@Before,前置通知,放在方法头上。 3.2、@After,后置【finally】通知,放在方法头上。 3.3、@AfterReturning,后置【try】通知,放在方法头上,使用returning来引用方法返回值。 3.4、@AfterThrowing,后置【catch】通知,放在方法头上,使用throwing来引用抛出的异常。 3.5、@Around,环绕通知,放在方法头上,这个方法要决定真实的方法是否执行,而且必须有返回值。
Spring AOP】@Aspect结合案例详解(一): @Pointcut使用@annotation + 五种通知
01-09
博文地址:https://blog.csdn.net/scm_2008/article/details/128593857 在微服务流行的当下,在使用SpringCloud/Springboot框架开发中,AOP使用的非常广泛,尤其是@Aspect注解方式当属最流行的,不止功能强大,性能也很优秀,还很舒心!所以本系列就结合案例详细介绍@Aspect方式的切面的各种用法,力求覆盖日常开发中的各种场景。本文带来的案例是:打印Log,主要介绍@Pointcut切点表达式的@annotation方式,以及 五种通知Advice注解:@Before、@After、@AfterRunning、@AfterThrowing、@Around。 本资源是@Pointcut使用@annotation的方式,结合五种通知Advice实现了打印方法Log的功能。 有任何问题,欢迎大家私信联系我. 作者:天罡gg
Spring AOP切面执行顺序深度解析:@Before, @After, @Around的协同作战
最新发布
fudaihb的博客
04-25 1293
Aspect-Oriented ProgrammingAOP)是一种编程范式,它旨在解决传统面向对象编程(OOP)中难以处理的问题,特别是那些横跨多个模块或层的横切关注点。这些关注点,如日志记录、事务管理和安全检查,通常散布在应用程序的多个部分中,导致代码重复和难以维护。AOP的核心思想是通过将这些横切关注点从业务逻辑中分离出来,封装成单独的模块,这些模块被称为“切面”(Aspect)。通过这种方式,我们可以将横切关注点的实现从核心业务逻辑中解耦,使得代码更加模块化、清晰和易于维护。
如何在Spring Boot中使用@AfterReturning注解
07-28
在本文中,我们介绍了Spring Boot AOP中的@AfterReturning注解,它用于定义在目标方法成功返回后执行的切面逻辑。我们通过一个图书管理系统的实例演示了@AfterReturning的使用方式,并在成功查询图书时记录了查询的时间和返回的结果。 AOP的强大之处在于它允许我们在不修改原有业务逻辑代码的情况下,将横切关注点(如日志记录、安全检查等)与业务逻辑分离。这样,我们可以更好地实现代码的复用和模块化,提高了应用程序的可维护性和可扩展性。 总体而言,Spring Boot AOP为我们提供了一个优雅且强大的方式来管理代码中的横切关注点,使得我们可以更专注于业务逻辑的实现,而不必担心这些横切关注点的具体实现。
AOP@Work:设计切入点来避免模式密集
02-22
在“JUnit:ACook'sTour”一文中,作者ErichGamma和KentBeck讨论了JUnit的设计。他们指出,与很多成熟框架中的关键抽象一样,TestCase也有很高的模式密集,易于使用而难以修改。在AOP@Work系列的第四期文章中,WesIsberg重温了Cook'sTour,说明如何通过使用AOP切入点设计来代替面向对象设计,在一定程度上避免导致成熟的设计难以修改的模式密集。即使是最好的Java:trade_mark:程序,也会随着时间的推移而老化。为了满足新的需求,设计也在不断演化,关键对象承担着各种模式角色,直到它们变得难以使用或者难以修改,最终不得不重构或者重写系统。面向方面的编程(AOP
Spring AOP 配置 @AspectJ支持的5中通知: —@Before:前置通知在方法执行前执行 —@After:后置通知,在方法执行后执行 —@AfterReturning返回通知
图灵传奇的博客
06-25 587
Spring AOP XML 配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
@around拦截直接返回_你知道Spring AOP @Before @Around @After 的执行顺序吗
weixin_42531396的博客
12-30 1713
做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开!作者:rainbow702用过spring框架进行开发的人,多多少少会使用过它的AOP功能,都知道有@Before、@Around和@After等advice。最近,为了实现项目中的输出日志和权限控制这两个需求,我也使用到了AOP功能。我使用到了@Before、@Around这两个advice。但在,使用过程中,却对它们的执行...
java aop返回值_Spring AOP的@Before咨询返回
weixin_32519927的博客
02-27 2180
编辑2:咨询 @Around("@annotation(CheckUserReservationPermission) && args(username,idReservation)")public Object userCreationAdvice(ProceedingJoinPoint pjp, DeleteByIdRequest req) throws Throwable {...
spring aop的@Before,@Around,@After,@AfterReturn,@AfterThrowing的理解
zyfeng123的博客
04-20 3365
spring aop的@Before,@Around,@After,@AfterReturn,@AfterThrowing的理解 1.AOP的基本概念 切面(Aspect) :通知(advice)和切入点(pointcut)共同组成了切面(aspect),时间、地点和要发生的“故事”。可以从注解方式来理解,代码如下。 @aspect为类上面的注解——切面 @pointcut(…)——切入点。为此类内一个空方法上面的注解。可以把拦截的地址表达式表示为方法签名,利于使用起来方便。 @before@after等—
Spring AOP(获取入参和返回值)及其原理:动态代理
象话的博客
02-28 5万+
此篇会先演示Spring AOP(获取入参和返回值),之后再演示AOP的原理:动态代理。 Spring AOPAOP思想: AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善。OOP引入封装、继承、多态等概念来建立一种对象层次结构,用于模拟公共行为的一个...
Spring @Aspect、@Before、@After 注解实现 AOP 切面功能
热门推荐
蚩尤后裔-汪茂雄
08-22 6万+
Spring AOP 注解概述 1、SpringAOP 功能除了在配置文件中配置一大堆的配置,比如切入点、表达式、通知等等以外,使用注解的方式更为方便快捷,特别是 Spring boot 出现以后,基本不再使用原先的 beans.xml 等配置文件了,而都推荐注解编程。 @Aspect 切面声明,标注在类、接口(包括注解类型)或枚举上。 @Pointcut 切入点声明,即切入到哪些目标类的目标方法。 value 属性指定切入点表达式,默认为 "",用于被通知注解引用
Spring_AOP_before.rar_AOP@before怎么用_Before
09-20
Spring_AOP_before的使用
6Spring AOP
小飞虫
07-09 254
3Spring AOP AOP(Aspect Orient Programming),也就是面向切面编程,作为面向对象编程的一种补充。AOP专门用于处理系统中分布于各个模块中的交叉关注点的问题。AspectJ是一个java语言的AOP框架,提供了强大的AOP功能。其主要包括两个部分:第一个部分定义了如何表达,定义AOP编程中的语法规范,通过这套语言规范,我们可以方便地用AOP来解决java语言中
Java练习(十):Spring应用之AOP的@Before, @After操作(简单工程示例)
sulia1234567890的博客
09-18 8078
目录 1. 背景概念 1.1 定义 1.2 AOP的本质 1.3 AOP的实现 1.4各个名称的概念详解 2. 示例工程 2.1 maven的配置文件: pom.xml 2.2 bean配置文件: bean_aop.xml 2.3 接口和类的代码 2.3.1 接口:UserService 2.3.2实现接口的类:UserServiceImpl 2.3.3Before类:BeforeLog 2.3.4After类:AfterLog 2.4 测试类 1. 背景概念 1....
Spring中的AOP @Around @Before @AfterReturning @After
涛哥是个大帅比
06-06 1万+
@Around是可以同时在所拦截方法的前后执行一段逻辑。@Before是在所拦截方法执行之前执行一段逻辑。@After 是在所拦截方法执行之后执行一段逻辑。注意:不能拦截静态(static)方法示例:package com.abc.advice; import java.util.Arrays; import org.aspectj.lang.JoinPoint; import org.asp...
1.springaop之@Before
u013571243的专栏
12-15 809
首先创建一个组件或者切点 @Component public class Chinese implements Person { // 实现Person接口的sayHello()方法 public String sayHello(String name) { // 返回简单的字符串 return name + " Hello , Spring AOP"; } // 定义一个ea
Spring AOP(面向切面)介绍以及示例(@Before @Around @After @AfterReturning @AfrerThrowing
qq_37130607的博客
03-31 3775
1、什么是面向切面(AOP) 在使用面向切面之前我们要理解一下面向对象和面向切面这两个概念。 面向对象就是提取公共特征进行抽象化,比如,不管是男人还是女人,它们都有年龄、名字等属性,那么就可以把这些属性以及相同的方法(如get、set)抽取到父类中,是一种纵向的抽取。 面向切面,就是将一些逻辑通过横向切割的方式抽取到一个独立的模块,业务只需要关注自身的逻辑,在运行业务时,由程序将这些逻辑织入,是一种横向的抽取。比如假设数据库操作之前需要编写日志,这时可以对修改每个函数添加写日志操作,为了提升代码复用可以进
Spring AOP中 前置、后置、返回、异常、环绕通知的实例
金州饿霸吃不饱的博客
12-07 704
1 在Spring中启用AspectJ注解支持   要在Spring应用中使用AspectJ注解,必须在classpath下包含AspectJ类库:aopalliance.jar、aspectj.weaver.jar和spring-aspects.jar   将aop Schema添加到&lt;beans&gt;根元素中。   要在Spring IOC容器中启用AspectJ注解支持,只要早bea...
详述Spring AOP中的@Before,@After,@AfterReturning,@AfterThrowing和@Around
nairuozi的博客
03-05 5317
AOP的定义:AOP将封装好的对象剖开,找出其中对多个对象产生影响的公共行为,并将其封装为一个可重用的模块,这个模块被命名为“切面”(Aspect),切面将那些与业务无关,却被业务模块共同调用的逻辑提取并封装起来,减少了系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。 简单来说,就是将多个对象中的,非核心重复性高的代码单独封装,以供调用。 极大地提高了代码复用率,降低了...
@AfterThrowing和@AfterReturning执行顺序
05-10
Spring AOP 中,@AfterReturning 和 @AfterThrowing 都是后置通知,它们的执行顺序是: 1. 当目标方法执行成功时,@AfterReturning 在目标方法返回后执行; 2. 当目标方法抛出异常时,@AfterThrowing 在目标方法抛出异常后执行。 因此,如果目标方法正常返回,那么@AfterReturning会先于@AfterThrowing执行;如果目标方法抛出异常,那么@AfterThrowing会先于@AfterReturning执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 除法的加减交替法 9572
  • 详述Servlet获取form表单数据 6433
  • 在ArrayList中根据自定义类的一个属性找某个对象 3602
  • MyBatis 使用resultMap查询多表并将结果映射为一个vo类 3015
  • 邮件协议、域名、域名解析原理、动态DNS、邮件传递过程 2775

分类专栏

  • 安卓 2篇
  • mybatis 7篇
  • 笔记 1篇
  • 总结 1篇
  • javaEE 11篇
  • c++ 4篇
  • HTML 5篇
  • mysql 4篇
  • 数据库系统原理 7篇
  • javaSE 29篇
  • spring 5篇
  • springMVC 3篇
  • 计算机组成原理 1篇
  • 邮件 1篇
  • 数据结构 2篇
  • js 5篇
  • jQuery 10篇

最新评论

  • 除法的加减交替法

    做而论道_CS: 计算机中,只有二进制数(0 和 1)。 根本就没有小数点(.)。 而且,CPU 进行计算时,数据,只有一个符号位。 双符号位,就是没影的事。 即使是唐所费自己制作一个 CPU,他也不会弄成两个符号位。 因为,一个符号位,就可以解决所有的问题。 多弄一个无用的,干嘛呢?

  • 除法的加减交替法

    做而论道_CS: 事实上,不仅你写的有错。 就是计算机教材(比如唐所费的)里面,也是写的不伦不类。 正常人学计算机,都感觉很难。 因为这些专家、老师,他自己都不知道讲的是什么。

  • 除法的加减交替法

    做而论道_CS: 你的图片中有:x = 0.101001,y = 0.111。 这里的 x、y,是什么东西? 它们,应该都是数字,应该写正负号(+-)。 正确的写法是: x = +101001,y = +111。 然后,再写一个:-y = -111。 写完这些,再求它们的原码或补码:   [x]补 = 0.101001,   [y]补 = 。。。,  [-y]补 = 。。。

  • 除法的加减交替法

    做而论道_CS: 请教一个简单的:  十进制: 14 / 4 = 3 ... 2。 用四位二进制,应该怎么算呢?  又比如:-14 / 4 =-3 ... -2。 又应该怎么算?

  • 除法的加减交替法

    kate0000000: 如果X,Y符号不同,那余数怎么看?还是先当做符号相同的算出余数,商,最后看符号

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 安卓聊天app设计思路
  • 安卓Handler使用实例(含源代码
  • 最新版Android Studio安装踩坑总结
2021年4篇
2020年44篇
2019年61篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司红河营销型网站建设临汾网站搭建公司郴州关键词按天计费公司银川外贸网站建设推荐德阳外贸网站建设哪家好宣城seo网站推广推荐德宏设计公司网站公司十堰企业网站改版价格楚雄优化推荐资阳百度竞价包年推广哪家好盐城至尊标王推荐重庆网站优化按天计费崇左百度爱采购哪家好坪地设计网站多少钱清徐建站报价汕尾营销网站保山百姓网标王推广哪家好昆明网站搜索优化报价东营seo推荐武威网站建设推荐鞍山seo网站推广报价三亚百搜标王推荐呼和浩特设计公司网站哪家好承德阿里店铺托管哪家好烟台营销型网站建设价格抚顺模板推广多少钱驻马店网站制作多少钱郴州网站建设设计推荐贵阳网站定制报价淮北seo网站优化推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化