AOP编程之前置通知

Spring AOP 前置通知、返回通知、异常通知、后置通知、环绕通知 前置技能: Java、JDBC、Spring IOC快速入门 、 Spring IOC 注解方式注入 什么是AOP: 面向切口编程(Aspect Oriented Programming),AOP是OOP的延续,是Spring框架的一个重要内容。 AOP利用称为"横切"的技术,剖解开封装的对象内部,把多个类的公共行为封装到一个可重用模块中,便于减少重复代码,降低模块之间的耦合度,AOP符合开闭原... 阅读详情

             在AOP编程中有三种类别对象,分别是通知(拦截器,,如统一的日志组件,流控组件),代理对象(ProxyFactoryBean,实现方法调用前的拦截),被代理对象(被拦截的对象)。

         例子:假设有一个接口TestServiceInter有一个方法sayHello,它有两个实现类Test1Service和Test2Service,现在需要实现在调用sayHello之前完成拦截,实现相关日志的记录,相关的关系图如下:



第一步:创建被代理对象

TestServiceInter.java

package com.csdn.aop;

public interface TestServiceInter {

	public void sayHello();
}


Test1Service.java

package com.csdn.aop;

public class Test1Service implements TestServiceInter {

	private String name;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void sayHello() {
		// TODO Auto-generated method stub
		System.out.println("hi "+name);
	}

}

第二步:创建前置通知(拦截器)

package com.csdn.aop;

import java.lang.reflect.Method;

import org.springframework.aop.MethodBeforeAdvice;

public class MyMethodBeforeAdvice implements MethodBeforeAdvice {

	/**
	 * method: 被调用方法名字
	 * args: 给method传递的参数
	 * target: 目标对象
	 */
	public void before(Method method, Object[] args, Object target)
			throws Throwable {
		// TODO Auto-generated method stub
		System.out.println("记录日志..."+method.getName());

	}

}

第三步:配置代理对象ProxyFactoryBean

  在bean.xml中配置通知,被代理对象,以及将通知织入代理对象中

如下:

<!-- 配置被代理的对象 -->
<bean id="test1Service" class="com.csdn.aop.Test1Service">
<property name="name" value="xiaoding133" />
</bean>

<bean id="MyMethodBeforeAdvice" class="com.csdn.aop.MyMethodBeforeAdvice" /> 
<!-- 配置代理对象 -->
<bean id="proxyFactoryBean" class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 代理接口集 -->
<property name="proxyInterfaces">
	<list>
		<value>com.csdn.aop.TestServiceInter</value>
	</list>
</property>
<!-- 把通知织入到代理对象  -->
<property name="interceptorNames">
	<!-- 相当于包MyMethodBeforeAdvice前置通知和代理对象关联,我们也
	可以把通知看出拦截器 -->
	<value>MyMethodBeforeAdvice</value>
</property>
<!-- 配置被代理对象,可以指定 -->
<property name="target" ref="test1Service"/>
</bean>
</beans>


第四步:使用方法

ApplicationContext ac=new ClassPathXmlApplicationContext("com/csdn/aop/beans.xml");
		TestServiceInter ts=(TestServiceInter) ac.getBean("proxyFactoryBean");
		ts.sayHello();
采用上面的方法获取代理对象(不能直接获取被代理对象的bean,否则拦截器失效)调用sayhello前,会调用前置对象MyMethodBeforeAdvice的before记录相关日志的操作。


 注意事项: 下面的前置通知接口提供了获得目标方法、参数和目标对象的机会。不能够改变运行时参数,即不能替换参数对象和目标对象。 注意在方法结束后不返回任何值东西。原因是该接口返回后,目标方法将会被调用,应该返回目标对象的返回值。该接口唯一能阻止目标方法被调用的途径是抛出异常或(System.exit())。



Spring AOP面向切面编程6:AOP相关概念四:AOP通知之:前置通知、后置通知、返回后通知、异常通知;(这四种通知不太重要,用的不多,稍微了解下就行) 说明: (1)本篇博客的代码,基于【Spring AOP面向切面编程2:初识AOP二:AOP初体验;(一个Spring AOP的案例,走了一遍流程)】中的代码; (2)【Before Advice】,【AfterReturningAdvice】,【AfterThrowingAdvice】,【AfterAdvice】这四种通知,在日常开发中并不常用,只是可能在面试中会被问及; (3)【AroundAdvice环绕通知】是重点内容,这部分内容在下篇博客中详细介绍; (4)通知执行顺... 阅读详情

相关推荐

一文吃透 Spring 中的 AOP 编程

基于 Aspectj 实现 AOP 操作: 第一版:基于xml(aop:config)配置文件; 第二版:基于xml(aop:aspect)配置文件; 第三版:基于注解实现通知。

不迁怒,不贰过。小知识,大智慧。 3564

AOP切面增强模块方法(判断前端传入参数,对参数进行修改)

场景阐述 AOP切面通知的类型 在基于Spring AOP编程的过程中,基于AspectJ框架标准,spring中定义了五种类型的通知,它们分别是: 前置通知 (@Before) 。 返回通知 (@AfterReturning) 。 异常通知 (@AfterThrowing) 。 后置通知 (@After)。 环绕通知 (@Around) :(优先级最高) 参数修改 @Around("execution(* org.jeecg.modules.ddp.controller.ddpReport.*.*(..)

zxy855的博客 2649

spring aop的注解配置中,前置,后置,环绕通知,以及异常通知怎么获得被代理方法的参数

NULL 博文链接:https://baobeituping.iteye.com/blog/1208293

Java Spring 通过 AOP 实现方法参数的重新赋值、修改方法参数的取值

方式一:通过环绕通知实现 方式二:通过前置通知 + 反射实现

emmmm..... 6742

数学概念 | 旋转矩阵、欧拉角、四元数

旋转矩阵、欧拉角、四元数概念及相关运算;

NapoleonCoder的博客 772

利用Matlab高效处理Comsol仿真数据的可视化技巧

本文详细介绍了如何将Comsol仿真数据高效导入Matlab并进行专业可视化与后处理。核心内容包括正确的数据导出格式设置、三维矩阵重构方法、二维截面与三维体渲染技巧,以及基于Matlab的定量分析与批处理自动化流程,帮助工程师和科研人员深度挖掘仿真数据价值,提升工作效率。

weixin_29065791的博客 361

前置通知也能对参数进行加工 通过joiPoint这个方法

转载于:https://www.cnblogs.com/classmethond/p/10765603.html

weixin_30251829的博客 305

手把手教你用SpringBoot+Vue3+Docker从零搭建一个在线OJ系统(附完整源码)

本文详细介绍了如何使用SpringBoot、Vue3和Docker从零搭建一个在线OJ系统,涵盖前后端开发、判题机实现及Docker容器化部署。通过完整的源码和实战步骤,帮助开发者掌握OJ系统的核心架构与关键技术,适用于算法训练、编程竞赛等场景。

weixin_42648844的博客 297

springbootAOP基础,定义切点方式,获取/修改请求参数

1.AOP介绍 1.六种通知方式 环绕通知:在目标方法执行前和执行后实施增强,可用于日志记录,事务处理等 前置通知:在目标方法执行前实施增强,可用于权限管控等 后置返回通知:在目标方法成功执行后实施增强,可用于关闭流,删除临时文件等 后置通知:在目标方法执行后实施增强(无论方法是否发生异常都执行),可用于释放资源 异常通知:在目标方法抛出异常时实施增强,可用于处理异常,记录日志等 引入通知:在目标类中添加一些方法和属性,用于修改目标类 2.AspectJ相关注解 @Aspect:用于定义一个切面,注解

weixin_45131142的博客 5446

属性基加密(Attribute-based Encryption, ABE)

KP-ABE中,用户的密钥定义了访问策略,密文的属性与策略进行匹配。CP-ABE中,密文定义了访问策略,用户的属性与策略进行匹配。

2201_75392924的博客 1830

Cosmos Transfer2.5多模态AI模型部署与优化实战

多模态AI技术通过融合文本、图像、代码等不同模态数据,实现跨模态理解与生成。其核心原理基于Transformer架构的注意力机制,结合对比学习实现模态对齐。这类技术在智能内容创作、跨模态搜索等领域具有重要价值,尤其适合电商营销图文生成、UI设计转代码等场景。Cosmos Transfer2.5作为先进的多模态模型,支持8192 tokens长文本窗口和混合模态输入,实测推理速度达17.5 samples/s(T4显卡)。部署时需注意FlashAttention优化可提升3倍长文本处理效率,8-bit量化则能

weixin_29038303的博客 280

Spring-aop编程之前置通知

Spring-aop编程之前置通知 aop( Aspect-Oriented Programming)前置通知原理案例讲解 编程步骤; 定义接口 编写对象(被代理的对象即目标对象) 编写通知(前置通知即目标方法调用前调用) 在beans.xml文件中配置                 4.1. 配置&...

杨的博客 378

YOLOv11 改进 - 特征融合 | 小目标检测救星:DySample动态上采样减少特征丢失

本文介绍了超轻量且高效的动态上采样器DySample与YOLOv11的结合,以解决传统上采样器工作负载大、应用场景受限的问题。DySample从点采样角度构建上采样,绕过动态卷积,使用PyTorch标准内置函数实现,无需定制CUDA包,能大幅减少参数、FLOPs等资源消耗。我们将DySample代码集成进YOLOv11。实验脚本显示,结合DySample的YOLOv11在多个密集预测任务中或表现出色。

魔改工程师的博客 1414

aop编程之前置通知

aop( Aspect-Oriented Programming)前置通知原理案例讲解 编程步骤; 定义接口 编写对象(被代理的对象即目标对象) 编写通知(前置通知即目标方法调用前调用) 在beans.xml文件中配置 4.1.配置 被代理对象即目标对象 4.2.配置通知 ...

weixin_30751947的博客 185

桌面运维工程师面试题汇总(高频完整版)

岗位,覆盖:电脑硬件、系统安装与故障、网络、办公软件、安全、AD域、打印机、日常排错、服务意识。

老韩的Linux云计算架构师进阶之路 909

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

AOP——面向切面编程

AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。 OOP(Object Oriented Programming)面向对象编程,是一种编程思想,所以,AOP也是一种编程思想,只是他们两个是不同的编程范式。

m0_62912377的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringBoot核心特性—AOP(详解AOP通知类型:环绕通知、前置通知等,以及AOP的连接点、通知、切入点、切面、目标对象以及通知顺序)

SpringBoot核心特性—AOP(详解AOP通知类型:环绕通知、前置通知等,以及AOP的连接点AOP英文全称:Aspect Oriented Programming(面向切面编程、面向方面编程),面向切面编程就是面向特定方法编程。减少重复代码提高开发效率维护方便面向这样的指定的一个或多个方法进行编程,我们就称之为 面向切面编程。AOP面向方法编程,就可以做到在不改动这些原始方法的基础上,针对特定的方法进行功能的增强。AOP的作用:在程序运行期间在不修改源代码的基础上对已有方法进行增强(无侵入性: 解耦)

Java技术加油站的博客 1746

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【spring】AOP通知的使用

AOP(Aspect Oriented Programming),即面向切面编程。所谓"切面",简单说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度,并有利于未来的可操作性和可维护性。 AOP把软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处基本相似,比如权限认证、日志、事物。AOP的作用在于分离系统中的各种关注点,将核心关

morris 1万+

aop java proceed_aop编程之后置通知,环绕通知和异常通知

---恢复内容开始---此将实例将在上一讲前置通知的基础上进行配置,前置配置内容:http://www.cnblogs.com/lihuibin/p/7955947.html 具体流程如下:1.首先配置后置通知,继续在上一讲的aop包中新建MyAfterReturningAdvice.java类,该类要实现AfterReturningAdvice接口中的public void afterRet...

weixin_32380501的博客 813

《Spring技术内幕》学习笔记9——AOP通知以及编程式AOP

1.处理AOP配置的通知基本步骤: (1).获取AOP配置的通知Advice: 从上一篇博客《创建AOP代理对象并对目标对象切面拦截》对Spring中采用JDK和CGLIB两种方式创建AOP动态代理的源码分析中,我们了解到,在AOP动态代理对象的回调方法中,都需要使用以下方式获取AOP配置的通知,并将获取到的通知和目标对象、代理对象等一起封装为ReflectiveMethodInvocatio

Tony Chen的专栏 7492

【Spring AOP】什么是AOP?切点、连接点、通知和切面

AOP 概述与 Spring AOP 详解 AOP(面向切面编程)是 Spring 框架的第二大核心,是一种面向特定方法编程的思想,通过集中处理某一类问题实现解耦。Spring AOP 是其一种实现方式,相比拦截器能更细致地拦截方法(按包、类、方法等),典型应用如接口耗时统计。 核心概念 切点(Pointcut):定义拦截规则的表达式(如 execution(* com.example.controller.*.*(..)))。 连接点(Join Point):满足切点表达式的方法(如 Controller

Yeeear的博客 2204

Spring-AOP通知和执行顺序?

Spring-AOP通知和执行顺序?

java1234的博客 814

spring之AOP(面向切面编程)和五大通知(前置通知、后置通知、异常通知、环绕通知、过滤通知)

一、aop的介绍 二、前置通知 三、后置通知 四、环绕通知 五、异常通知 六、过滤通知 七、总结

qq_54936371的博客 4043

Spring Aop 日志通知讲述及使用

以上这些概念和机制一起协作,通过配置来实现AOP的功能。在Spring中,通过使用XML配置、注解或Java配置来定义切面、切点、通知等,并将切面应用到目标对象上。Spring框架在运行时会自动识别切点,并按照配置的通知类型执行切面的逻辑。总而言之,Spring框架的AOP通过切面、切点、通知等概念和机制,提供了一种机制来管理横切关注点的代码逻辑。这使得开发人员能够在不修改核心业务逻辑的情况下,实现横切关注点的复用和集中处理,提高了代码的模块化、重用性和可维护性。

SAME_LOVE的博客 863
上一篇: Bean的生命周期
下一篇: AOP编程之后置通知、环绕通知、异常通知、引入通知
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值