AOP编程实例:拦截拦截某个实现类的⽅法第⼀步:配置实现MethodInterceptor的切⾯
java代码
1public class OutsideInvokeLogInterceptor implements MethodInterceptor{
2private static Logger log = Logger("outsideInvoke");
3
4    @Override
5public Object invoke(MethodInvocation invocation) throws Throwable {
6        String methodName = Method().toString();
7        Object returnValue = invocation.proceed();
8if (returnValue == null) {
9            log.warn("调⽤ " + methodName + "is fail,返回的result结果为空,⽅法⼊参为:(" + Arguments()) + ")");
FailureResult(BSErrorCode.INTERNAL_ERROR, BaseKeyMsgCode.RETURN_RESULTDTO_IS_NULL);
11        }else{
12if(returnValue instanceof ResultDTO){
spring aop应用场景13                ResultDTO<Object> resultDTO = (ResultDTO<Object>)returnValue;
14if(!resultDTO.isSuccess()){
15                    log.warn("调⽤ " + methodName + " is fail ,⽅法⼊参为:(" + Arguments()) + ")"
16                          + "返回值:" +Code() + "," + Key());
17                } else{
18                    log.info("调⽤ " + methodName + " is success ,⽅法⼊参为:(" + Arguments()) + ")");
19                }
20            }
21        }
22return returnValue;
23
24    }
25 }
View Code
1<bean id="outsideInvokeLogAdvice" class="com.ali.lunamons.service.interceptor.OutsideInvokeLogInterceptor"/>
View Code
配置切点:
1<bean id="methodPointcut" class="org.springframework.aop.support.NameMatchMethodPointcut">
2<property name="mappedNames">
3<list>
4<value>add*</value>
5</list>
6</property>
7</bean>
View Code
配置⾃动代理:
1<bean id="outsideInvokeLogInterceptor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
2<property name="pointcut" ref="methodPointcut"/>
3<property name="advice" ref="outsideInvokeLogAdvice"/>
4</bean>
5<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
6<property name="beanNames">
7<list><value>activityService</value></list>
8</property>
9<property name="interceptorNames">
10<list>
11<value>outsideInvokeLogInterceptor</value>
12</list>
13</property>
14</bean>
View Code

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。