AOP详解及通过XML配置实现的实现方法

本文深入解析Spring AOP的术语,包括切面、连接点、通知等,并详细介绍了如何通过XML配置实现AOP,涵盖了joinpoint语法、pointcut命名、advice应用及实例代码。

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

AOP详解及通过XML配置实现的实现方法
1.Spring AOP详解
讲解一下Spring AOP 的一些常用术语
切面(Aspect):
要增加什么功能?一般一个类就代表着一个功能(每个功能就是一个切面)
常用的切面有:事务管理,日志管理,权限管理,异常处理等等
     
连接点(Joinpoint):
哪个类的哪个方法上增加功能?
通知(Advice):
切面类的功能加在方法的什么位置?前面?后面?产生异常时?环绕(前面和后面都有)??
切入点(Pointcut):
给连接点(Jooinpoint)命名,便于在多处使用,这点很重要
目标对象(Target Object):
目标对象是被代理对象,自己的功能不够强大,要通过aop加强。
 
AOP代理(AOP Proxy)
功能已经通过aop加强的那个对象(这个是目标对象加强后的对象)
(一般都是newProxyinstance)
织入(Weaving)
把新功能(通过aop加强的功能)和本身的功能(目标对象的基本功能)组织在一起执行。
下面讲解一下一些语法(也是aop详解部分)
1.joinpoint语法:用一些通配符来定义在哪些类和方法上增加aop功能。
  语法:(注意星号后面的空格)
  1).execution(public * * (..))
    所有public方法 
 
  2).execution(* set*(..))
    所有以set作为方法名开头的方法
  3).exuection(* com.xzy.service.AccountService.* (..))
   com.xzy.service.AccountService类中的所有方法
  4).execution(* com.xyz.service.*.* (..))
   com.xyz.service包中所有类的所有方法
  5).execution(* com.xyz.service..*.* (..))
   com.xyz.service包及子包下的所有类的所有方法
2.pointcut:给joinpoint取个名字。(这个比较重要)
  @pointcut("execution( * com.xzy.*.* (..))")
  public void myPoint(){}///必须要写一个空的函数,然后
  如这样调用:@Before("myPoint()")
3.advice 
 @Before
 @AfterReturning
 @AfterThrowing
 @After(finally)
 @Around


4.JoinPoint jp
  ProceedingJointPoint pjp
这个可以知道当前aop对那个类的那个方法进行功能加强,也很重要,
也就是可以知道aop的切入点
 System.out.println(jp.getSignature());///打印切入点的标签
但是aop切面类里面的方法要包含JoinPoint jp,如这样:
public void myend(JoinPoint jp)
{
 System.out.println("方法结束了......");
}

5、下面讲解在spring的xml配置AOP
代码如下:
<aop:config>
   <aop:aspect ref="log">
     <aop:pointcut 
            expression="execution(* net.xinqushi.dao.impl.*.*(..))" id="pt"/>
<aop:before method="before" pointcut-ref="pt"/>
<aop:after method="after" pointcut-ref="pt"/>
   </aop:aspect>
</aop:config>
注意:在aop类中必须指定@Component(value="log")///说明用spring来初始化这个类
这里面的log和ref="log"必须相同
其他的代码以此类推!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值