Spring AOP 基本方式(Advice方式)
2013-09-19 10:21
246 查看
1、通知 Advice
1)根据对方法进行拦截的时机,分为四种:
Before Advice:方法执行之前进行拦截
AfterReturning Advice:方法正常执行结束之后进行拦截
AfterThrowing Advice:方法异常结束之后进行拦截
Around Advice:环绕通知
2)注意:
AroundAdvice应单独使用,不和其他的三种混合
AroundAdvice中要手动调用目标方法:methodInvocation.proceed()
2、用ProxyFactoryBean来创建代理对象
拦截器Advice
创建Proxy
<bean id=”proxy” class=”org.springframework.ProxyFactoryBean”>
<property name=”target” ref=”targetBean” />
<property nam=”interceptorNames”>
<list>
<value>adviceBean</value>
......
</list>
</property>
</bean>
3、Spring AOP advice方式与AOP方式对比
Spring对基本AOP方式进行了封装,把原来的拦截器改造成能够按时间分来进行拦截的Advice通知方式,平且提供了创建Proxy代理对象的ProxyFactoryBean,只需要给ProxyFactoryBean同时传递target目标对象属性、和interceptorNames的advice集合属性即可。
4、主要实现代码
1)Advice实现
Before Advice
implements MethodBeforeAdvice {
before(Method method, Object[] args, Object target){
//拦截逻辑
log.info(“this is before advice”);
......
}
}
AfterReturning Advice
implements AfterReturningAdvice {
afterReturning(Object result, Method method, Object[] args, Object target) {
//拦截逻辑
log.info(“this is afterReturning advice”);
......
}
}
AfterThrowing Advice
Implements ThrowsAdvice {
afterThrowing(Exception e) {
//拦截逻辑
log.info(“this is afterThrowing advice”);
......
}
}
Around Advice
Implements MethodInterceptor {
invoke(MethodInvocation methodInvocation) {
//拦截逻辑
......
Object result = methodInvocation.proceed();
......
return result;
}
}
可以以spring配置文件或者注解方式声明adviceBean
2)Proxy实现
<bean id=”proxy” class=”org.springframework.ProxyFactoryBean”>
<property name=”target” ref=”targetBean” />
<property nam=”interceptorNames”>
<list>
<value>adviceBean</value>
......
</list>
</property>
</bean>
3)注意:
在spring3中,spring aop advice 依赖于 aopalliance-1.0.jar 包,不引用这个jar包,Acvice类就不能实现相应接口
1)根据对方法进行拦截的时机,分为四种:
Before Advice:方法执行之前进行拦截
AfterReturning Advice:方法正常执行结束之后进行拦截
AfterThrowing Advice:方法异常结束之后进行拦截
Around Advice:环绕通知
2)注意:
AroundAdvice应单独使用,不和其他的三种混合
AroundAdvice中要手动调用目标方法:methodInvocation.proceed()
2、用ProxyFactoryBean来创建代理对象
拦截器Advice
创建Proxy
<bean id=”proxy” class=”org.springframework.ProxyFactoryBean”>
<property name=”target” ref=”targetBean” />
<property nam=”interceptorNames”>
<list>
<value>adviceBean</value>
......
</list>
</property>
</bean>
3、Spring AOP advice方式与AOP方式对比
Spring对基本AOP方式进行了封装,把原来的拦截器改造成能够按时间分来进行拦截的Advice通知方式,平且提供了创建Proxy代理对象的ProxyFactoryBean,只需要给ProxyFactoryBean同时传递target目标对象属性、和interceptorNames的advice集合属性即可。
4、主要实现代码
1)Advice实现
Before Advice
implements MethodBeforeAdvice {
before(Method method, Object[] args, Object target){
//拦截逻辑
log.info(“this is before advice”);
......
}
}
AfterReturning Advice
implements AfterReturningAdvice {
afterReturning(Object result, Method method, Object[] args, Object target) {
//拦截逻辑
log.info(“this is afterReturning advice”);
......
}
}
AfterThrowing Advice
Implements ThrowsAdvice {
afterThrowing(Exception e) {
//拦截逻辑
log.info(“this is afterThrowing advice”);
......
}
}
Around Advice
Implements MethodInterceptor {
invoke(MethodInvocation methodInvocation) {
//拦截逻辑
......
Object result = methodInvocation.proceed();
......
return result;
}
}
可以以spring配置文件或者注解方式声明adviceBean
2)Proxy实现
<bean id=”proxy” class=”org.springframework.ProxyFactoryBean”>
<property name=”target” ref=”targetBean” />
<property nam=”interceptorNames”>
<list>
<value>adviceBean</value>
......
</list>
</property>
</bean>
3)注意:
在spring3中,spring aop advice 依赖于 aopalliance-1.0.jar 包,不引用这个jar包,Acvice类就不能实现相应接口
相关文章推荐
- Spring 3 AOP总结 (包含注解式AOP定义, poincut及advice的一些定义方式)
- Spring中AOP基本概念及配置方式
- Spring---AOP基本概念以及Advice5种类型的通知注解应用实例
- spring aop方式配置事务中的三个概念 pointcut advice advisor
- spring之AOP基本概念和AOP的三种实现方式
- spring aop advice注解实现的几种方式
- spring AOP advice 类型 和 通用的切点的配置方式
- Spring--AOP--基本配置(Intruductions-- Advice 动态代理)
- Spring--AOP--基本配置(切面Aspect,切入点Pointcut,通知Advice)
- 【框架】[Spring]纯Java方式实现AOP拦截-详解ThrowsAdvice异常通知
- Spring 3 AOP总结 (包含注解式AOP定义, poincut及advice的一些定义方式)
- Spring学习4-面向切面(AOP)之Spring接口方式
- Spring-注解的方式配置AOP-案例
- Spring学习4-面向切面(AOP)之aspectj注解方式
- Spring实现AOP的4种方式
- 深入理解Spring AOP之基本概念
- Spring之AOP XML方式
- Spring、Mybatis和Logback集成,用面向切面AOP方式捕获并打印异常Exception信息
- Spring学习总结(三)——Spring实现AOP的多种方式
- spring-AOP基本概念