想在项目里面使用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来实现多数据库的读写分离。 首先,了解读写分离的基本概念。读写分离是指在一个数据库系统中,将读操作和写操作分配到不同的数据库服务器上,通常读操作远大于写操作,这样可以...
本文将深入探讨如何利用Spring AOP(面向切面编程)实现应用层的MySQL读写分离,并结合一主多从的配置来进行详细讲解。 首先,我们需要理解MySQL的主从复制机制。在主从复制中,数据的写操作(INSERT、UPDATE、...
在这个“Spring实现增删改查”的项目中,我们将深入探讨如何利用Spring框架来实现数据库操作的基础功能。 1. **依赖注入(DI)**:在Spring框架中,DI是一种设计模式,它允许对象之间的关系在运行时被外部容器管理...
Spring 框架是 Java 开发中的一个核心组件,它为构建可维护、模块化和松耦合的应用程序提供了一种强大的方式。...通过这些深入的学习,开发者可以更好地利用 Spring 框架来设计和实现高效、可扩展的 Java 应用程序。
在"shruts2+spring写的简单BBS管理"项目中,这两个框架的结合可以实现高效的BBS(Bulletin Board System)后台管理。开发者可能利用Struts2来处理用户交互,如发帖、回帖、搜索等操作,而Spring则负责管理业务对象、...
虽然实际开发中我们通常使用完整版的Spring,但是理解这个简化版本有助于我们更好地利用Spring,优化我们的代码,并且加深对软件设计原则的理解。在后续的学习中,我们还可以探索Spring的其他特性,如MVC(Model-...
主库上的所有写操作都会被记录到二进制日志(binlog),从库会定期或者实时地从主库获取这些日志并应用到自己的数据上,从而保持与主库数据的一致性。 **4. Spring配置** 在Spring中,可以使用多数据源配置来实现...
【Spring 框架开发与 MyEclipse 集成详解】 在软件开发中,Spring 框架因其强大的依赖注入、AOP(面向切面...在实际项目中,你可以根据需求扩展 Bean 配置,以及利用 Spring 提供的其他特性,如 AOP、数据访问支持等。
本篇文章将深入探讨如何利用Spring Batch实现数据库大数据量的读写操作。 ### 1. Spring Batch 概述 Spring Batch 提供了一套完整的解决方案,涵盖了批量处理的生命周期管理,包括初始化、执行、监控和重试等环节...
1.利用spring对实例管理 2.利用spring框架对对象实例注入 3.利用注解完成对象的创建和属性的自动注入 4.掌握AOP操作,实现增刑改查中任意一项操作增强 5.使用C3P0,jdbcTemplate模板操作数据库 6.只有一个通讯录表和...
开发者可以利用Spring Batch提供的执行器(JobLauncher)来启动和控制批处理作业的运行。此外,作业的执行策略可以配置为同步执行或是异步执行,以及配置执行监听器来获取作业执行过程中的状态和事件。 知识点四:...
Spring不仅提供了依赖注入,还包含其他核心功能,如AOP(用于添加日志、事务管理等跨切面关注点),以及数据访问、Web开发和任务调度等模块。随着对Spring的深入学习,我们将能够利用它的强大功能构建更加高效、可...
《Spring框架1.0源码解析》 Spring框架,作为Java企业级应用开发的重要支柱,自2003年发布以来,已经历了多个版本的迭代,为开发者...通过深入学习,我们可以更好地利用Spring的强大功能,提高软件开发的质量和效率。
Spring 提供了对多种 ORM 框架的集成支持,如 Hibernate、MyBatis、JPA 等,使得开发者可以充分利用 Spring 的优势进行数据操作。 1. **Spring 整合 Hibernate**:Hibernate 是一款流行的 ORM 框架,它允许开发者用...
以上这些库构成了 Spring MVC 开发的基础环境,开发者可以利用它们来创建控制器、定义模型、配置视图解析器,以及实现事务管理、数据访问等复杂功能。通过 Spring MVC,开发者能够以声明式的方式组织应用程序,提高...
- **XML配置**:在传统的Spring应用中,Bean的定义通常写在XML配置文件中,如`springbean-xml`中的配置。 - **注解配置**:使用`@Component`,`@Service`,`@Repository`和`@Controller`注解标记类,配合`@...
学习这些文档,开发者可以深入理解Spring框架的工作原理,掌握如何使用IoC容器管理bean,如何实现AOP切面,以及如何利用Spring进行数据访问和Web应用开发。同时,文档还会详细介绍各种配置选项、API用法和最佳实践,...
Spring AOP和IOC是Spring框架的核心特性,它们极大地简化了企业级Java应用的开发。...在实际项目中,结合使用Spring AOP进行日志记录、事务管理等,以及利用IOC管理对象和依赖,能够显著提升代码质量和可维护性。
通过阅读和分析`SpringIocByAnnotation`压缩包中的代码,我们可以深入学习Spring的IoC容器如何解析注解,管理bean的生命周期,以及如何利用反射和AOP进行依赖注入和事务管理。这样的实践对于提升Spring框架的使用...
在"学习了spring.net后写的小例子"中,我们可以看到作者通过实践来加深对Spring.NET的理解。 Spring.NET的核心特性之一是依赖注入,它允许我们解耦组件间的依赖关系,使得代码更加灵活和可测试。在这个小例子中,...