Spring 面向切面编程

本文深入解析了AOP(面向切面编程)技术,介绍了其如何通过横切技术分离并封装公共行为,以及如何巧妙地将其融合回业务逻辑中。文章详细解释了AOP的基本术语,包括连接点(join point)、切入点(point cut)、通知(advice)和切面(aspect),并通过Spring框架的配置示例展示了AOP的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

它利用一种称为"横切"的技术,能够剖解开封装的对象内部,并将那些影响了多个类并且与具体业务无关的公共行为 封装成一个独立的模块(称
为切面)。更重要的是,它又能以巧夺天功的妙手将这些剖开的切面复原,不留痕迹的融入核心业务逻辑中。这样,对于日后横切功能的编辑和重用都能够带来极大
的方便。    AOP技术的具体实现,无非也就是通过动态代理技术或者是在程序编译期间进行静态的"织入"方式。下面是这方面技术的几个基本术语:    

1、join point(连接点):是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现AOP时,并不需要去定义一个join point。    

2、point cut(切入点):本质上是一个捕获连接点的结构。在AOP中,可以定义一个point cut,来捕获相关方法的调用。    

3、advice(通知):是point cut的执行代码,是执行“方面”的具体逻辑。 

4、aspect(切面):point cut和advice结合起来就是aspect,它类似于OOP中定义的一个类,但它代表的更多是对象间横向的关系。   

引入jar包

aopalliance.jar

aspectjweaver.jar

spring-aop-3.2.16.RELEASE.jar

SpringConfig.xml中配置

<!-- 定义切面程序 -->
<!-- 编写切面组件类 -->
<bean id="thelog" class="Aop.AopText"></bean>

<!-- 切入
<aop:config>

<aop:pointcut expression="execution(* biz.*.*(..))" id="pointcut"/>定义切入点
  <aop:aspect ref="thelog">
    <aop:before method="Before" pointcut-ref="pointcut"/>

    把切面程序中的Before方法,在程序运行前切入到满足 biz.*.*(..)) 条件的类的方法中

    <aop:after-returning method="after" returning="result" pointcut-ref="pointcut"/>调用方法后切入
    <aop:after-throwing method="aerror" pointcut-ref="pointcut" throwing="ex"/>  程序报错时加入异常程序
  </aop:aspect>
</aop:config>
-->

AopText.中的方法

 

一般情况加入注解来使用

 SpringConfig.xml中配置

<!-- 定义切面程序 -->
<!-- 编写切面组件类 -->
<bean id="thelog" class="Aop.AopText"></bean>
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>

AopText中 同上图所示

  

转载于:https://www.cnblogs.com/qhantime/p/10746249.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值