前言:
公司生产环境频频被报性能瓶颈问题,为了找出问题的所在,现有的很多种方式能够解决,但是为了能够观测到具体的方法,我们想通过拦截那种耗时的方法,然后插入数据库,后台支撑系统能够实时的观察...
为了上述描述的结果,我们采用spring拦截器的方式,通过stopwatch的观察者模式,通过方法进入和方法退出来计算方法调用整个耗时情况
package spring.lifecycle; import net.bull.javamelody.MonitoringSpringInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.springframework.util.StopWatch; /** * Created by Young on 2015/9/26. */ class MonitoringSpringInterceptor2 extends MonitoringSpringInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { final String requestName = getRequestName(invocation); StopWatch stopWatch = new StopWatch(requestName); stopWatch.start(requestName); try { Object obj = super.invoke(invocation); return obj; } finally { stopWatch.stop(); System.out.println(stopWatch.getTotalTimeSeconds()); } } }
Spring的配置:
<bean id="monitoringSpringInterceptor" class="spring.lifecycle.MonitoringSpringInterceptor2"></bean> <bean id="autoProxyCreator" class="spring.lifecycle.BeanNameAutoProxyCreator"> <property name="beanNames"> <list> <value>*Service</value> <value>*DAO</value> </list> </property> <property name="interceptorFilter"> <map> <entry key="*Service" value="transactionInterceptor,monitoringSpringInterceptor"/> </map> </property>
结论:
想起来这些拦截,实现很简单,但是应用场景很频繁,对于生产环境监测,其实有更多需要的场景,如:bug跟踪、性能检测、方法参数、方法return等,所以功能场景很多,代码也不难。
相关推荐
在提供的压缩包文件"wbInter"中,可能包含了一个示例或模板,用于演示如何在CXF3.0和Spring3.2环境中创建和配置自定义拦截器。通过学习和理解这些文件,你可以更深入地了解如何在实际项目中应用这一技术。 总之,...
在本项目中,"spring集成cxf客户端和服务器端demo(含自定义拦截器)"是一个实战案例,展示了如何在Spring框架下与Apache CXF服务进行整合,实现客户端和服务端的交互,并利用拦截器来增强功能。以下是这个项目涉及的...
自定义拦截器是扩展Spring MVC功能、添加自定义行为的一种常见方式。以下是对自定义拦截器实现步骤的详细解释: ### 1. 自定义拦截器类 #### 1.1 继承 `HandlerInterceptorAdapter` 你可以选择继承`...
这涉及到Spring Boot的Web层架构、AOP(面向切面编程)以及自定义拦截器的概念。Spring Boot简化了传统Spring应用的配置,但仍然允许用户通过XML配置来扩展功能,特别是在某些特定场景下,如集成第三方库或定制化...
首先,自定义拦截器需要实现Spring MVC提供的`HandlerInterceptor`接口。这个接口定义了三个关键方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`: 这是在请求被...
本篇将详细讲解如何在Spring Boot中创建并使用自定义拦截器,并提供相关的示例代码。 首先,我们需要了解Spring MVC中的拦截器(HandlerInterceptor)接口。该接口定义了三个方法: 1. `preHandle...
SpringBoot 自定义拦截器 的 源代码 SpringBoot 自定义拦截器 一、自定义拦截器 二、编写控制器 三、添加拦截器对象,注入到容器的配置类中 另一种写法 四、最后application运行 我们对拦截器并不陌生,无论是 ...
1. 创建自定义拦截器类:你需要创建一个实现了`HandlerInterceptor`接口的类,这个接口包含三个方法:`preHandle()`, `postHandle()`, 和 `afterCompletion()`。这些方法会在请求生命周期的不同阶段被调用。 ```...
为了使自定义拦截器生效,我们需要在Spring Boot的配置类中注册它: ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation....
以上步骤展示了如何使用Spring Boot中的自定义拦截器和自定义注解来实现对特定方法的选择性拦截。这种机制可以非常灵活地控制哪些请求需要经过额外的验证或处理,对于构建安全可控的应用程序来说非常重要。
在Spring MVC中,我们可以通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类来创建自定义拦截器。拦截器的主要方法包括preHandle、postHandle和afterCompletion,分别在请求处理前、处理后以及...
"CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载" 这个标题揭示了该项目的核心技术栈,包括: 1. CXF 3.1.16:这是一个开源的服务框架,用于构建和开发服务,支持SOAP和RESTful Web服务...
4. 将自定义拦截器添加到SpringMVC的配置中。通常,我们会在`WebMvcConfigurerAdapter`的`addInterceptors`方法中注册拦截器。 5. 测试拦截器,确保它按预期工作。 示例代码如下: ```java public class ...
我们可以通过自定义拦截器来实现特定的功能,比如权限验证、日志记录等。在Struts2的配置文件中,我们可以注册这个拦截器: ```xml ``` 然后在Action类上声明需要使用的拦截器: ```xml ...
自定义拦截器通常需要继承`HandlerInterceptorAdapter`并覆盖其方法。例如,`ControllerInterceptor`类实现了基本的拦截逻辑: ```java public class ControllerInterceptor extends HandlerInterceptorAdapter { ...
在这个例子中,`YourLoginInterceptor`是你自定义的登录拦截器类,`addPathPatterns`指定了需要拦截的URL模式,而`excludePathPatterns`则排除了不需要拦截的URL。 总结起来,Spring Boot结合JPA提供了强大的数据库...
在本文中,我们将深入探讨如何自定义拦截器以及如何通过Action在Request中传递复杂对象。 首先,自定义拦截器的步骤主要包括以下几个方面: 1. 创建拦截器类:你需要创建一个实现了特定框架提供的拦截器接口的类。...
在Spring框架中,拦截器(Interceptor)是一种强大的工具,它允许开发者在请求处理前后执行自定义逻辑,例如日志记录、权限检查等。Spring MVC中的拦截器是基于AOP(面向切面编程)原理实现的,可以理解为对...
1. 创建自定义拦截器类,实现`HandlerInterceptor`接口并重写`preHandle`、`postHandle`和`afterCompletion`方法。 2. 在Spring的MVC配置中注册拦截器,通常在`WebMvcConfigurerAdapter`的子类中,通过`...
2. **创建自定义拦截器**:首先,我们需要创建一个实现了`HandlerInterceptor`接口的类。这个接口中有三个方法: - `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`:在...