转自--dongsw
想在项目里面使用log4j做日志的记录,但现在需要写日志的类很多,而且写日志的代码都是雷同的,所以就利用spring的aop来完成写日志的任务。
首先,需要将log4j先配置好在web.xml中加入解析器servlet的配置
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/classes/log4j.properties</param-value>
</context-param>
<servlet>
<servlet-name>log4j</servlet-name>
<servlet-class>
org.springframework.web.util.Log4jConfigServlet
</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
之后,由于我项目当中配置了大量的service类,类名都以Service结尾,为了方便配置使用spring当中的BeanNameAutoProxyCreator类进行aop配置。
在spring配置文件中配置如下:
<bean class="cn.aresoft.fw.log.LoggerAdvice" id="loggerAdvice"/>
<bean class=
"org.springframework.aop.framework
.autoproxy.BeanNameAutoProxyCreator" >
<!-- 始终以CGLib技术动态代理-->
<!-- <property name="optimize"><value>true</value></property> -->
<!-- 配置开关 这句不加getBean()方法获得bean是会报类型转换异常-->
<property name="proxyTargetClass"><value>true</value></property>
<property name="interceptorNames">
<list>
<value>loggerAdvice</value>
</list>
</property>
<property name="beanNames">
<list>
<value>*Service</value>
</list>
</property>
</bean>
再来就是写Advice类了也就是配置中的LoggerAdvice,代码如下:
public class LoggerAdvice implements MethodBeforeAdvice,
AfterReturningAdvice,ThrowsAdvice {
public void before(Method method, Object[] args,
Object target)throws Throwable {
Logger logger = Logger.getLogger(target.getClass());
logger.debug("+Class : "+ target.getClass().getName());
logger.debug("+Method : "+ method.getName());
}
public void afterReturning(Object retuVal, Method method,
Object[] args,Object target) throws Throwable {
Log log = LogFactory.getLog(target.getClass());
//do log
}
public void afterThrowing(Method method,Object[] args,
Object target,Exception ex){
Logger logger = Logger.getLogger(target.getClass());
logger.error("数据处理时发生异常",ex);
}
}
分享到:
相关推荐
在日志管理中,Spring AOP 可以非常有效地帮助我们记录应用程序的关键操作和异常信息,提供对系统行为的跟踪和分析能力。 1. **AOP概念**: - 切面(Aspect):定义关注点的模块化,如日志、事务管理等。 - 连接...
Spring AOP 日志管理 实例LoggingThrowsAdvice.java
Spring 面向方面编程(AOP)是Java开发中的一种重要技术,它允许程序员将关注点从核心业务逻辑中分离出来,例如日志记录、事务管理、性能监控等。在Spring框架中,AOP主要通过切面(Aspect)来实现,这是一种模块化...
- **切面(Aspect)**: AOP的核心概念,它封装了关注点,如日志、事务管理等,将这些关注点与业务逻辑分离。 - **通知(Advice)**: 在特定连接点执行的操作,如方法调用前、后或异常发生时。 - **连接点(Join ...
Spring AOP是Spring框架的重要组成部分,它提供了一种声明式的方式来处理横切关注点,如日志记录、事务管理等。在我们的场景中,Spring AOP可以用于动态地决定哪些操作应该路由到读库,哪些操作应该路由到写库。 要...
6. **Spring AOP**:AOP用于模块化的横切关注点,如日志记录、性能监控、事务管理等。在Spring中,可以使用注解或XML配置定义切面,实现代码的解耦。 7. **Spring Boot**:虽然题目中未明确提及,但Spring Boot是...
在主从复制中,数据的写操作(INSERT、UPDATE、DELETE)只在主库上进行,而从库则通过同步日志来实时更新数据,保证与主库的一致性。这样,读操作可以分散到多个从库上,减轻主库的压力,提高系统性能。 Spring AOP...
AOP允许开发者定义“切面”,这些切面可以包含业务逻辑的各个部分,如日志记录、事务管理等。Spring通过代理模式实现了AOP,主要有JDK动态代理和CGLIB代理两种方式。在源码中,`Advisor`、`Pointcut`和`Advice`等...
在"shruts2+spring写的简单BBS管理"项目中,这两个框架的结合可以实现高效的BBS(Bulletin Board System)后台管理。开发者可能利用Struts2来处理用户交互,如发帖、回帖、搜索等操作,而Spring则负责管理业务对象、...
此外,Spring还提供了AOP(面向切面编程)支持,允许开发者定义和执行横切关注点,如日志、事务管理等,从而实现了代码的模块化和职责分离。 在Spring MVC中,Spring提供了一种用于构建Web应用的模型-视图-控制器...
4. **AOP(面向切面编程)**:Spring 的 AOP 模块提供了面向切面编程的实现,允许开发者定义方法拦截器和切入点,以实现如日志、事务管理等跨切面的关注点。 5. **AS(Application Server)**:Spring 提供了与常见...
该配置文件为springboot的日志配置文件,在项目中直接可直接引用
2. **面向切面编程**:Spring的AOP(Aspect Oriented Programming)特性允许我们在不修改`Duck`类的基础上,添加日志、性能监控等横切关注点。例如,我们可以在飞行行为执行前后加入日志记录,以追踪鸭子飞行的状态...
《自己动手写一个Spring》这篇文章主要探讨了Spring框架的核心概念,并通过模拟其实现来帮助读者深入理解其工作原理。Spring是Java开发中最流行的框架之一,它以依赖注入(Dependency Injection,DI)和面向切面编程...
在标题和描述中提到的“spring写好的代码,配合spring必须jar包使用”,意味着我们有已经编写完成的Spring相关代码,并需要合适的jar包来运行。下面我们将详细探讨Spring框架的核心概念、关键组件以及如何配置和使用...
Spring的AOP模块支持创建定义横切关注点的“切面”,如日志、事务管理等,这些关注点可以被模块化并独立于业务逻辑。AOP通过动态代理或字节码增强实现切面的插入。 四、Bean的生命周期管理 Spring管理的Bean有三种...
Spring4D 提供了面向切面编程的支持,允许开发者定义横切关注点,如日志、事务管理等,并将其与业务逻辑解耦。这使得代码更加整洁,减少了重复代码,提高了代码复用性。 **4. 数据访问层(Data Access Layer, DAL)...
在本项目中,我们主要关注的是“spring写的一个小demo”,这是一个基于Java的Spring框架的实践案例。Spring是Java开发中最流行的开源框架之一,它以其依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...
主库上的所有写操作都会被记录到二进制日志(binlog),从库会定期或者实时地从主库获取这些日志并应用到自己的数据上,从而保持与主库数据的一致性。 **4. Spring配置** 在Spring中,可以使用多数据源配置来实现...
AOP是Spring提供的另一大特色,它允许开发者定义关注点(如日志、事务管理)并将其与业务逻辑分离。在mini-spring中,你会了解到如何创建切面、定义通知(advises)以及如何将这些切面应用到目标对象上。这对于编写...