Spring入门到精通六——Spring AOP API使用

一、Spring AOP API

这是Spring1.2历史用法,现在(V4.0)仍然支持。

这是SpringAOP基础,不得不了解,现在的用法也是基于历史的,只是更简便了。

Pointcut:实现之一:NameMatchMethodPointcut,根据方法名字进行匹配。

成员变量:mappedNames,匹配的方法名集合。
 

<bean id="bizLogincTarget" class="test16.BizLogincImpl"></bean>
<bean id="pointcutBean" class="org.springframework.aop.support.NameMatchMethodPointcut">
    <property name="mappedNames">
        <list>
            <value>sa*</value>
        </list>
    </property>
</bean>

Before advice:一个简单的通知类型。只是在进入方法之前被调用,不需要MethodInvocation对象,前置通知可以在连接点执行之前插入自定义行为,但不能改变返回值。

Throws advice:如果连接点抛出异常,throws advice在连接点返回后被调用,如果throws-advice的方法抛出异常,那么它将覆盖原有异常,接口org.springframework.aop.ThrowsAdvice不包含任何方法,仅仅是一个声明。实现类需要实现类似下面的方法:
void afterThrowing([Method,args,target],ThrowableSubclass)。

After Returning advice:后置通知必须实现org.springframework.aop.AfterReturningAdvice接口;可以访问返回值、被调用的方法、方法的参数和目标。如果抛出异常,将会抛出拦截器链,替代返回值。

Interception around advice:Spring的切入点模型使得切入点可以独立与advice重用,以针对不同的advice可以使用相同的切入点。

Introduction advice:Spring把引入通知作为一种特殊的拦截通知,需要IntroductionAdvisor和IntroductionInterceptor仅适用于类,不能和任何切入点一起使用。

Advisor API in Spring:Advisor是仅包含一个切入点表达式关联的单个通知的方面。除了introductions,advisor可以用于任何通知,org.springframework.aop.support.DefaultPointcutAdvisor是最常用的advisor类,它可以与MethodInterceptor,BeforeAdvice或者ThrowsAdvice一起使用,它可以混合在Spring同一个AOP代理的advisor和advice。

二、ProxyFactoryBean

创建Spring AOP代理的基本方法是使用org.springframework.aop.framework.ProxyFactoryBean,这可以完全控制切入点和通知(advice)以及他们的顺序。

使用ProxyFactoryBean或者其他IOC相关类来创建AOP代理的最重要好处是通知和切入点也可以由IOC容器来管理。

当被代理类没有实现任何接口,使用CGLIB代理,否则使用JDK代理(有接口时)。

通过设置proxyTargetClass为true时,可强制使用CGLIB代理。如果目标类实现了一个或者多个接口,那么创建代理的类型将依赖ProxyFactoryBean的配置。

如果ProxyFactoryBean的proxyInterfaces属性被设置为一个或者多个全限定接口名,则基于JDK的代理将被创建。

如果ProxyFactoryBean的proxyInterfaces属性没有被设置,但是目标类实现了一个(或者多个)接口,那么ProxyFactoryBean将自动检测到这个目标类已经实现了至少一个接口,创建一个基于JDK的代理。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值