BeanNameAutoProxyCreator拦截器拦截某个实现类方法的步骤

 

第一步:配置实现MethodInterceptor的切面

public class OutsideInvokeLogInterceptor implements MethodInterceptor{
	private static Logger log = Logger.getLogger("outsideInvoke");
  
	@Override
	public Object invoke(MethodInvocation invocation) throws Throwable {
        String methodName = invocation.getMethod().toString();
        Object returnValue = invocation.proceed();
        if (returnValue == null) {
            log.warn("调用 " + methodName + "is fail,返回的result结果为空,方法入参为:(" + parseArguments(invocation.getArguments()) + ")");
            return ResultDTO.getFailureResult(BSErrorCode.INTERNAL_ERROR, BaseKeyMsgCode.RETURN_RESULTDTO_IS_NULL);
        }else{
            if(returnValue instanceof ResultDTO){
                ResultDTO<Object> resultDTO = (ResultDTO<Object>)returnValue;
                if(!resultDTO.isSuccess()){
                    log.warn("调用 " + methodName + " is fail ,方法入参为:(" + parseArguments(invocation.getArguments()) + ")"
                         + "返回值:" +resultDTO.getCode() + "," + resultDTO.getKey());
                } else{
                    log.info("调用 " + methodName + " is success ,方法入参为:(" + parseArguments(invocation.getArguments()) + ")");
                }
            }
        }
        return returnValue;

	}
}
 

 

 

<bean id="outsideInvokeLogAdvice" class="com.ali.luna.commons.service.interceptor.OutsideInvokeLogInterceptor" />

 

第二步:配置切点


<bean id="methodPointcut" class="org.springframework.aop.support.NameMatchMethodPointcut">
        <property name="mappedNames">
            <list>
                <value>add*</value>
            </list>
        </property>
    </bean>

 

第三步:配置自动代理

    <bean id="outsideInvokeLogInterceptor" class="org.springframework.aop.support.DefaultPointcutAdvisor">
        <property name="pointcut" ref="methodPointcut"/>
        <property name="advice" ref="outsideInvokeLogAdvice"/>
    </bean>
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="beanNames">
            <list><value>activityService</value></list>
        </property>
        <property name="interceptorNames">
            <list>
                <value>outsideInvokeLogInterceptor</value>
            </list>
        </property>
    </bean>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值