AOP编程实例:拦截器拦截拦截某个实现类的方法

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

java代码

 1 public class OutsideInvokeLogInterceptor implements MethodInterceptor{
 2     private static Logger log = Logger.getLogger("outsideInvoke");
 3
 4     @Override
 5     public Object invoke(MethodInvocation invocation) throws Throwable {
 6         String methodName = invocation.getMethod().toString();
 7         Object returnValue = invocation.proceed();
 8         if (returnValue == null) {
 9             log.warn("调用 " + methodName + "is fail,返回的result结果为空,方法入参为:(" + parseArguments(invocation.getArguments()) + ")");
10             return ResultDTO.getFailureResult(BSErrorCode.INTERNAL_ERROR, BaseKeyMsgCode.RETURN_RESULTDTO_IS_NULL);
11         }else{
12             if(returnValue instanceof ResultDTO){
13                 ResultDTO<Object> resultDTO = (ResultDTO<Object>)returnValue;
14                 if(!resultDTO.isSuccess()){
15                     log.warn("调用 " + methodName + " is fail ,方法入参为:(" + parseArguments(invocation.getArguments()) + ")"
16                          + "返回值:" +resultDTO.getCode() + "," + resultDTO.getKey());
17                 } else{
18                     log.info("调用 " + methodName + " is success ,方法入参为:(" + parseArguments(invocation.getArguments()) + ")");
19                 }
20             }
21         }
22         return returnValue;
23
24     }
25 }  

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

配置切点:

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>  

配置自动代理:

 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>  

时间: 2024-10-10 05:57:37

AOP编程实例:拦截器拦截拦截某个实现类的方法的相关文章

[原创]java WEB学习笔记64:Struts2 学习之路--Struts的CRUD操作( 查看 / 删除/ 添加) ModelDriven拦截器 paramter 拦截器

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

从源代码剖析modelDriven拦截器和params拦截器和拦截器prepare 和paramsPrepareParamsStack拦截器栈(使您的Struts2代码更加简洁——怎样培养框架设计能力

源代码文件出处:Web App Libraries/struts2-core-2.3.15.3.jar/struts-default.xml 拦截器modelDriven: <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/> 拦截器params: <interceptor name="par

Struts2-整理笔记(五)拦截器、拦截器配置

拦截器(Interceptor) 拦截器是Struts2最强大的特性之一,它是一种可以让用户在Action执行之前和Result执行之后进行一些功能处理的机制. 拦截器的优点 简化了Action的实现.拦截器能把很多功能从Action中独立出来,大量减少了Action的代码 功能更单一.按照上面的描述,把功能从Action中分离出来,分散到不同的拦截器中,这样每个拦截器的功能,以及Action本身的功能就更单一了. 通用代码模块化.从Action中把功能分离出来,放到拦截器中去实现,这样能把一些

SpringMVC拦截器_1_拦截器的实现

SpringMVC interceptor:下列参考的blog文章 Spring MVC简介 SpringMVC 拦截器实现原理和登录实现 SpringMVC拦截器详解[附带源码分析] 学习SpringMVC--拦截器 ********************* 1-1 拦截器 拦截器是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强. 使用场景:解决请求的共性问题(如:乱码问题,权限验证等) ===2 拦截器的实现========================== ---2-1 拦截器

Struts2拦截器、拦截器栈(Interceptor Stack)、全局拦截器与方法拦截器

Struts2拦截器原理 Struts2拦截器是在访问某个Action或Action的方法之前或之后实施拦截.在请求Struts2的Action时,Struts2会查找配置文件,并根据配置文件实例化相应的拦截器对象. Struts2拦截器配置 struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Found

spring拦截器不拦截方法名原因

开发一个基于注解的登录拦截器,遇到拦截器只能拦截controller不能拦截到具体的方法名,这样拦截器就完全没用,经过仔细摸索,DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter并不支持拦截方法,发现只有3.1版本后才支持,而且需要使用RequestMappingHandlerMapping 和 RequestMappingHandlerAdapter来替换 ,也可以直接通过引入annotation-driven使用,然后

struts2拦截器-自定义拦截器,放行某些方法(web.xml配置)

一.web.xml配置 <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-val

springmvc中自定义拦截器以及拦截器的执行过程

1.拦截器在一次请求中的执行流程 2.拦截器入门案例 2.1springMVC.xml的编写 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m

javax.xml.ws.soap.SOAPFaultException: 没有Header,拦截器实施拦截

客户端代码: client.getOutInterceptors().add(new AuthInterceptor("zhangsan", "123456")); 不是: client.getInInterceptors().add(new AuthInterceptor("zhangsan", "123456")); 意思是在客户端发送请求前做拦截处理.