`
cywhoyi
  • 浏览: 420980 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring自定义拦截器配置

阅读更多

前言:

公司生产环境频频被报性能瓶颈问题,为了找出问题的所在,现有的很多种方式能够解决,但是为了能够观测到具体的方法,我们想通过拦截那种耗时的方法,然后插入数据库,后台支撑系统能够实时的观察...

 

为了上述描述的结果,我们采用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等,所以功能场景很多,代码也不难。

2
2
分享到:
评论
2 楼 cywhoyi 2015-09-28  
jinpengaigo 写道
HandlerInterceptor 其实也很好用

都行吧,最重要是完成你的目的性
1 楼 jinpengaigo 2015-09-28  
HandlerInterceptor 其实也很好用

相关推荐

    CXF3.0+Spring3.2 自定义拦截器

    在提供的压缩包文件"wbInter"中,可能包含了一个示例或模板,用于演示如何在CXF3.0和Spring3.2环境中创建和配置自定义拦截器。通过学习和理解这些文件,你可以更深入地了解如何在实际项目中应用这一技术。 总之,...

    spring集成cxf客户端和服务器端demo(含自定义拦截器)

    在本项目中,"spring集成cxf客户端和服务器端demo(含自定义拦截器)"是一个实战案例,展示了如何在Spring框架下与Apache CXF服务进行整合,实现客户端和服务端的交互,并利用拦截器来增强功能。以下是这个项目涉及的...

    springmvc(自定义拦截器的使用)

    自定义拦截器是扩展Spring MVC功能、添加自定义行为的一种常见方式。以下是对自定义拦截器实现步骤的详细解释: ### 1. 自定义拦截器类 #### 1.1 继承 `HandlerInterceptorAdapter` 你可以选择继承`...

    spring-boot 自定义xml配置web请求拦截器

    这涉及到Spring Boot的Web层架构、AOP(面向切面编程)以及自定义拦截器的概念。Spring Boot简化了传统Spring应用的配置,但仍然允许用户通过XML配置来扩展功能,特别是在某些特定场景下,如集成第三方库或定制化...

    SpringMvc自定义拦截器(注解)代码实例

    首先,自定义拦截器需要实现Spring MVC提供的`HandlerInterceptor`接口。这个接口定义了三个关键方法: 1. `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`: 这是在请求被...

    SpringBoot中自定义拦截器示例代码

    本篇将详细讲解如何在Spring Boot中创建并使用自定义拦截器,并提供相关的示例代码。 首先,我们需要了解Spring MVC中的拦截器(HandlerInterceptor)接口。该接口定义了三个方法: 1. `preHandle...

    SpringBoot 自定义拦截器 的 源代码

    SpringBoot 自定义拦截器 的 源代码 SpringBoot 自定义拦截器 一、自定义拦截器 二、编写控制器 三、添加拦截器对象,注入到容器的配置类中 另一种写法 四、最后application运行 我们对拦截器并不陌生,无论是 ...

    SpringBoot的拦截器

    1. 创建自定义拦截器类:你需要创建一个实现了`HandlerInterceptor`接口的类,这个接口包含三个方法:`preHandle()`, `postHandle()`, 和 `afterCompletion()`。这些方法会在请求生命周期的不同阶段被调用。 ```...

    自己spring boot 拦截器

    为了使自定义拦截器生效,我们需要在Spring Boot的配置类中注册它: ```java import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation....

    实现java自定义注解拦截器.docx

    以上步骤展示了如何使用Spring Boot中的自定义拦截器和自定义注解来实现对特定方法的选择性拦截。这种机制可以非常灵活地控制哪些请求需要经过额外的验证或处理,对于构建安全可控的应用程序来说非常重要。

    spring配置JSON拦截器VIEW

    在Spring MVC中,我们可以通过实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类来创建自定义拦截器。拦截器的主要方法包括preHandle、postHandle和afterCompletion,分别在请求处理前、处理后以及...

    CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载

    "CXF3.1.16 +Spring4 +MyBatis + Maven自定义拦截器 WebService实例源码下载" 这个标题揭示了该项目的核心技术栈,包括: 1. CXF 3.1.16:这是一个开源的服务框架,用于构建和开发服务,支持SOAP和RESTful Web服务...

    SSM笔记-SpringMVC的自定义拦截器

    4. 将自定义拦截器添加到SpringMVC的配置中。通常,我们会在`WebMvcConfigurerAdapter`的`addInterceptors`方法中注册拦截器。 5. 测试拦截器,确保它按预期工作。 示例代码如下: ```java public class ...

    struts2整合spring实现拦截器

    我们可以通过自定义拦截器来实现特定的功能,比如权限验证、日志记录等。在Struts2的配置文件中,我们可以注册这个拦截器: ```xml ``` 然后在Action类上声明需要使用的拦截器: ```xml ...

    Spring MVC 拦截器

    自定义拦截器通常需要继承`HandlerInterceptorAdapter`并覆盖其方法。例如,`ControllerInterceptor`类实现了基本的拦截逻辑: ```java public class ControllerInterceptor extends HandlerInterceptorAdapter { ...

    spring boot 登录拦截器

    在这个例子中,`YourLoginInterceptor`是你自定义的登录拦截器类,`addPathPatterns`指定了需要拦截的URL模式,而`excludePathPatterns`则排除了不需要拦截的URL。 总结起来,Spring Boot结合JPA提供了强大的数据库...

    自定义拦截器与Ation传递复杂对象到Request源码

    在本文中,我们将深入探讨如何自定义拦截器以及如何通过Action在Request中传递复杂对象。 首先,自定义拦截器的步骤主要包括以下几个方面: 1. 创建拦截器类:你需要创建一个实现了特定框架提供的拦截器接口的类。...

    Spring拦截器,高级参数绑定

    在Spring框架中,拦截器(Interceptor)是一种强大的工具,它允许开发者在请求处理前后执行自定义逻辑,例如日志记录、权限检查等。Spring MVC中的拦截器是基于AOP(面向切面编程)原理实现的,可以理解为对...

    Flex-Spring拦截器

    1. 创建自定义拦截器类,实现`HandlerInterceptor`接口并重写`preHandle`、`postHandle`和`afterCompletion`方法。 2. 在Spring的MVC配置中注册拦截器,通常在`WebMvcConfigurerAdapter`的子类中,通过`...

    spring MVC(新增拦截器demo)

    2. **创建自定义拦截器**:首先,我们需要创建一个实现了`HandlerInterceptor`接口的类。这个接口中有三个方法: - `preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)`:在...

Global site tag (gtag.js) - Google Analytics