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的代理。

猜你喜欢

转载自blog.csdn.net/qq_21583077/article/details/86621358