spring 日志拦截器,拦截beanName以"Ctrl"结尾的bean
public class LogFileInterceptor implements MethodInterceptor, ThrowsAdvice {
private static Logger logger = Logger.getLogger(LogFileInterceptor.class);
public Object invoke(MethodInvocation invocation) throws Throwable {
Long start = System.currentTimeMillis();
StringBuffer sb = new StringBuffer();
sb.append(invocation.getThis().getClass().getName());
sb.append(".");
sb.append(invocation.getMethod().getName());
sb.append("(");
sb.append(getArgs(invocation.getArguments()));
sb.append(")");
Object obj = null;
obj = invocation.proceed();
long end = System.currentTimeMillis();
sb.append("-->runtime:");
sb.append(start);
sb.append("--");
sb.append(end);
logger.info(sb.toString());
return obj;
}
public void afterThrowing(Method method, Object[] args, Object object, Throwable throwable) {
logger.error(object.getClass().getName() + "." + method.getName() + "(" + getArgs(args) + ")", throwable);
}
private String getArgs(Object[] args) {
StringBuffer sb = new StringBuffer();
String reval = null;
if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
sb.append(args[i]);
sb.append(",");
}
reval = sb.substring(0, sb.length() - 1);
}
return reval;
}
}
<!-- action自动代理 -->
<bean name="logAutoProxy"
class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="proxyTargetClass" value="true" />
<property name="beanNames">
<list>
<value>*Ctrl</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>logFileInterceptor</value>
</list>
</property>
</bean>
<bean id="logFileInterceptor" class="com.gangling.MmoLogFileInterceptor">
</bean>
分享到:
相关推荐
当controller中的方法被调用时,日志拦截器将会自动记录方法的调用和结束,提供详细的运行信息。这种方法使得我们可以将日志处理代码与业务逻辑分离,提高了代码的可读性和可维护性。 总结来说,Spring AOP为我们...
这将设置Spring Web相关类的日志级别为DEBUG,以便我们能看到拦截器的执行过程。 启动类通常会包含`@SpringBootApplication`注解,该注解包含了`@EnableAutoConfiguration`,`@ComponentScan`和`@...
标题中的"ssh+aop+log4j+日志拦截器+注解"涉及到的是Java Web开发中的几个核心组件和技术,这些技术在构建大型、分布式的企业级应用时常常被使用。下面将详细介绍这些知识点: 1. SSH (Spring, Struts, Hibernate)...
在Spring AOP中,拦截器扮演着关键角色。它是一个实现了`org.springframework.aop.MethodBeforeAdvice`、`org.springframework.aop.AfterReturningAdvice`或`org.springframework.aop.ThrowsAdvice`等接口的对象,...
具体到Spring AOP拦截器的代码实现,本文通过创建TestInterceptor类来演示。这个类继承自HandlerInterceptorAdapter,然后重写其中的afterCompletion、postHandle等方法。在这个类中,可以在相应方法中添加自定义的...
Spring AOP 拦截器 Advisor 是 Spring 框架中的一个重要概念,它与切面编程密切相关,用于实现细粒度的控制和增强应用程序的行为。在 Spring AOP 中,Advisor 是一个组合了通知(Advice)和切入点(Pointcut)的对象...
例如,可能会有一个自定义的MyBatis拦截器用于分页查询,一个Spring AOP切面用于记录操作日志,Spring事务管理确保数据的一致性,而反射工具类可能用于动态加载配置或处理某些通用的反射任务。通过这些组件的组合,...
在Spring AOP(面向切面编程)中,我们可以通过定义拦截器来实现对系统操作日志和异常日志的记录,这些日志信息通常会被存储到数据库中以便于后续的分析和故障排查。下面将详细介绍如何使用Spring AOP实现这个功能。...
总结来说,Spring AOP的日志拦截通过定义拦截器、切入点和顾问,可以方便地实现对特定方法的透明日志记录。这个示例中的`LogInterceptor.java`实现了具体拦截逻辑,而`config.xml`则负责配置拦截规则,两者结合实现...
在IT行业中,Spring AOP(面向切面编程)是一种强大的工具,它允许我们在不修改代码的情况下,对应用程序的特定部分进行拦截和增强。这在性能监控、日志记录、事务管理等方面尤为有用。本篇文章将深入探讨如何使用...
在提供的压缩包中,可能包含了一个或多个测试类(Tests),这些测试类通常用来验证AOP拦截器的功能。它们可能包含模拟业务场景的方法,这些方法会被切面拦截并执行相应的通知。通过运行这些测试,我们可以确保AOP...
它定义了一些通用的AOP接口,比如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,使得不同的AOP框架(如Spring和AspectJ)可以共享相同的拦截器(interceptors)。...
Spring AOP是Spring框架的一个重要特性,它允许开发者创建具有横切关注点的模块,如日志记录、事务管理等。这些关注点可以被声明性地应用到多个对象上,而无需修改这些对象的代码。Spring AOP通过动态代理实现,有两...
本实例主要探讨如何在Spring AOP中实现拦截器。 首先,我们来理解Spring AOP的基本概念。AOP的核心是代理,Spring提供了两种代理方式:JDK动态代理和CGLIB代理。JDK动态代理基于接口,当目标对象实现了接口时使用;...
面向切面编程(AOP,Aspect Oriented Programming)是一种编程范式,旨在将关注点分离,使得核心...它通过AOP代理和拦截器机制实现了对目标对象的透明增强,为诸如事务管理、日志记录等功能的实现提供了便捷的方式。
Spring AOP,全称Aspect-Oriented Programming(面向切面编程),是Spring框架的一个重要模块,它通过提供声明式的方式来实现面向切面编程,从而简化了应用程序的开发和维护。在Spring AOP中,我们无需深入到每个...
5. **运行测试**:使用`SprintAopTest`进行测试,确保拦截器正确地在目标方法调用前后执行。 通过这个小示例,我们可以学习到如何利用Spring AOP来优雅地处理系统中的横切关注点,使代码更清晰,更具模块化。同时,...
Spring AOP使用拦截器(Interceptor)机制来实现通知,拦截器按照顺序形成一个链,当目标方法被调用时,会逐个执行这些拦截器。这种设计使得我们可以灵活地插入、移除和重新排列通知,而不会影响核心业务代码。 ...
### Spring AOP 四种创建通知(拦截器)类型详解 Spring AOP(Aspect Oriented Programming,面向切面编程)是Spring框架中的一个重要模块,它提供了在应用代码中添加横切关注点的能力,如日志记录、事务管理、权限...
接下来,描述中提到了"MethodInterceptor",这是Spring AOP中的一种拦截器,用于拦截并修改代理对象的方法调用。不同于HandlerInterceptor,MethodInterceptor是基于代理的AOP,适用于拦截任何由Spring管理的对象,...