Spring Aop增强

Spring AOP是纯JAVA代码实现的,不需要专门的编译过程和类加载器,在运行期间通过代理方式向目标类织入增强代码,扩展JAVA语言

AOP的底层原理:JDK的动态代理和CGLIB的动态代理


通知:是指拦截到JoinPoint之后所要做的事

AOP通知的类型

前置通知: MethodBeforeAdvice

后置通知: AfterReturningAdvice

环绕通知: MethodInterceptor

异常抛出通知:ThrowsAdvice

引介通知:IntroductionInteceptor(很少使用)


切面类型

Advisor: 代表一般切面,Advice本身就是一个切面,对所有的方法都实现拦截

PointcutAdvisor: 代表带有切点的切面,可以指定拦截哪些方法


开发步骤:

第一步:引入jar包

aop和aopalliance

第二步:新建目标类HelloService和增强类HelloAdvice

第三步:配置

Advisor:

<bean id="helloAdvice" class="cn.itcast.springaop.HelloServiceBeforeAdvice"></bean>
<bean id="target" class="cn.itcast.springaop.HelloService" />
<bean id="helloService" class="org.springframework.aop.framework.ProxyFactoryBean" >
	<property name="proxyInterfaces" value="cn.itcast.springaop.IHelloService" />
	<!--如果不是针对接口代理,可以设置  <property name="proxyTargetClass" value="true"></property> ,将使用CGLib-->
	<property name="interceptorNames" value="helloAdvice"></property>
	<property name="target" ref="target"></property>
</bean>

第四步:

使用,注意使用getBean的时候,名称为增强后的名称,这里就是helloService而不是target

PointcutAdvisor:

<bean name="heloService" class="demo6.HelloService"></bean>
<bean name="helloAdvice" class="demo6.HelloAdvice"></bean>

<bean name="regexAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
	<property name="pattern" value=".*add"></property>
	<property name="advice" ref="helloAdvice"></property>
</bean>

<bean name="helloServiceProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
	<property name="target" ref="heloService"></property>
	<property name="interceptorNames" value="regexAdvisor"></property>
</bean>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值