spring aop的五种通知类型

Spring AOP的5种通知类型 AOP通知描述了抽取的共性功能,根据共性功能抽取的位置不同,最终运行代码时要将其加入到合理的位置。编写通知类,我们使用5种通知类型分别配置update与save方法上。接下来我们将save中的除0操作取消注释。编写配置类,开启切面编程配置。再运行,发现运行异常通知。......... 阅读详情

spring aop通知(advice)分成五类:
前置通知[Before advice]:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。
正常返回通知[After returning advice]:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。
异常返回通知[After throwing advice]:在连接点抛出异常后执行。
返回通知[After (finally) advice]:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。
环绕通知[Around advice]:环绕通知围绕在连接点前后,比如一个方法调用的前后。这是最强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是中断执行。
接下来通过编写示例程序来测试一下五种通知类型:

  • 定义接口
package com.chenqa.springaop.example.service;

public interface BankService {

    /**
     * 模拟的银行转账
     * @param from 出账人
     * @param to 入账人
     * @param account 转账金额
     * @return
     */
    public boolean transfer(String form, String to, double account);
}
  • 编写实现类
package com.chenqa.springaop.example.service.impl;

import com.chenqa.springaop.example.service.BankService;

public class BCMBankServiceImpl implements BankService {

    public boolean transfer(String form, String to, double account) {
        if(account<100) {
            throw new IllegalArgumentException("最低转账金额不能低于100元");
        }
        System.out.println(form+"向"+to+"交行账户转账"+account+"元");
        return false;
    }

}
  • 修改spring配置文件,添加以下内容:
<!-- bankService bean -->    
    <bean id="bankService" class="com.chenqa.springaop.example.service.impl.BCMBankServiceImpl"/>
    <!-- 切面 -->
    <bean id="myAspect" class="com.chenqa.springaop.example.aspect.MyAspect"/>
    <!-- aop配置 -->
    <aop:config>
        <aop:aspect ref="myAspect">
            <aop:pointcut expression="execution(* com.chenqa.springaop.example.service.impl.*.*(..))" id="pointcut"/>
            <aop:before method="before" pointcut-ref="pointcut"/>
            <aop:after method="after" pointcut-ref="pointcut"/>
            <aop:after-returning method="afterReturning" pointcut-ref="pointcut"/>
            <aop:after-throwing method="afterThrowing" pointcut-ref="pointcut"/>
            <aop:around method="around" pointcut-ref="pointcut"/>
        </aop:aspect>
    </aop:config>
  • 编写测试程序
ApplicationContext context = new ClassPathXmlApplicationContext("spring-aop.xml");
        BankService bankService = context.getBean("bankService", BankService.class);
        bankService.transfer("张三", "李四", 200);

执行后输出:
这里写图片描述
将测试程序中的200改成50,再执行后输出:
这里写图片描述
通过测试结果可以看出,五种通知的执行顺序为: 前置通知→环绕通知→正常返回通知/异常返回通知→返回通知,可以多次执行来查看。

手把手教你用Cadence VPWLF源和参数扫描:搞定非周期激励与gmid曲线绘制(避坑指南) 本文详细介绍了如何在Cadence Virtuoso中使用VPWLF源生成复杂非周期激励信号,并结合gmid方法进行双参数扫描优化电路设计。通过实战案例和避坑指南,帮助工程师高效解决波形生成和参数可视化难题,提升模拟电路设计效率。 阅读详情

相关推荐

[Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--地图(一)

上面3章图是完成后的效果图 游戏已完成,除了英雄外,基本还原了90%的游戏内容,一共13关,20种防御塔,30+种敌人,如上图,以假乱真吧 下面从地图模块起介绍我的方法,如有更好的方法,请留言一起讨论,游戏资源下载原版游戏数据包,解压即可 推荐一款软件,TextureUnpackerRelease1.04可以分割plist形式的图片,提高效率 经过一个月学习也发现之前有很多化简为繁的错误

7172

AOP通知类型

AOP通知类型分为以下5类:1.前置通知(@Before):设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法前运行 2.后置通知(@After):设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法后运行 3.抛出异常后的通知(@AfterThrowing):设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点方法运行抛出异常后执行 4.返回后的通知(@AfterReturning):设置当前通知方法与切入点之间的绑定关系,当前通知方法在原始切入点

weixin_73075117的博客 4123

DW1000芯片实战:如何用UWB技术打造10厘米精度的室内定位系统(附Arduino代码)

本文是一份基于DW1000芯片和UWB技术的实战指南,详细介绍了如何从零构建一个精度可达10厘米的室内定位系统。内容涵盖硬件选型与连接、软件环境配置、核心的双向测距算法实现,并深入探讨了信号干扰抑制、功耗优化等实战挑战,为物联网开发者提供了完整的Arduino代码和部署思路。

root9的博客 496

Spring AOP(5种通知类型)

Spring AOP(5种通知类型)

kimi 5329

eMMC数据擦除的方式

接下来主要是讲解erase、trim、discard的差异,涉及的command有CMD35、CMD36、CMD38。一般用来擦除整卡或者某些分区,如果只想擦除一个。以下是device status的部分解释。eMMC的数据擦除方式有6种,分别是。将会跳过写保护,只执行其他的范围。Discard的命令序列是。Erase的命令序列是。的范围有包含写保护,Trim的命令序列是。

DPJimmy的博客 1763

Zabbix华为交换机光衰告警

zabbix使用自动发现监控huawei网络设备光衰

qq_31651649的博客 4529

aop五种通知类型

aop五种通知类型 //前置通知:在方法执行前通知 @Before(value = “”) //环绕通知:可以将要执行的方法(point.proceed())进行包裹执行,可以在前后添加需要执行的操作 @Around(value = “”) //后置通知:在方法正常执行完成进行通知,可以访问到方法的返回值的。 @AfterReturning(value = “”) //异常通知:在方法出现异常时进行通知,可以访问到异常对象,且可以指定在出现特定异常时在执行通知。 @AfterThrowing(value =

m0_43450981的博客 9425

实战:如何用MIPI CSI-2高效传输RAW10图像数据(附带宽优化技巧)

本文深入探讨了MIPI CSI-2协议在RAW10图像数据传输中的高效应用,详细解析了4像素5字节打包机制及其带宽优化技巧。通过动态Lane分配、位深度自适应压缩和虚拟通道交错传输等实战方法,显著提升传输效率,适用于IoT摄像头开发等低功耗场景。

css33的专栏 731

Spring aop 五种通知类型

Spring aop 五种通知类型 spring aop 的五种通知类型 前置通知 Before advice:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常 后置通知 After returning advice:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行 异常通知 After throwing advice:在连接点抛出异常后执行 最终通知 After (finally) advice:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内

小熊 1万+

软件可靠性设计

本文系统介绍了软件可靠性设计与建模的理论框架和实施方法。首先从可靠性定义、核心思想和与建模的关系等理论基础出发,重点阐述了模块化设计、冗余容错、异常处理等六类可靠性设计方法及其技术栈。文章详细分析了可靠性设计在软件生命周期各阶段的应用,并深入探讨了设计与建模的深度结合机制,包括参数影响、验证方法和量化指标。最后提出了覆盖设计、开发、测试和运行四个阶段的落地策略,形成完整的"设计-建模-运行"流程体系。全文强调通过预防性设计和量化建模相结合的方法提升软件系统的可靠性和稳定性。

moton2017的博客 895

RT-DETR改进策略【小目标改进】| Shape-NWD:融合改进,结合Shape-IoU和NWD 更好地适应小目标特性

Bw−wgt2h−hgt2weight2Bweight2w−wgt​2h−hgt​2​其中weight2weight = 2weight2。

Limiiiing的博客 1543

关于Spring Aop支持五种类型通知

关于Spring Aop支持五种类型通知

qq_59649143的博客 1616

【WRF后处理】基于wrf-python处理wrf运行结果wrfout_d01

基于wrf-python处理wrf运行结果wrfout_d01

WW、forever的博客 5207
上一篇: spring aop学习笔记
下一篇: 深入探讨 Java 类加载器
圆猿缘
博客等级 码龄17年 9粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值