基于springAOP注解实现日志功能

最近准备开始新项目,在项目启动前,我们的架构师分配了个任务给我,利用spring的切面技术做一个日志管理的案例。要求很简单,就是需要记录:谁在什么时候对谁做了什么操作,同时在日志的描述中还要有修改前后内容的对比。话说两句话是挺简单的,但是对于对spring只有初学者水平的我还是有点难度的,于是各种百度,各种谷歌,各种想。终于在这篇http://kaowww153.iteye.com/blog/603891博客中得到启发,但是里面的内容写的还是不够完整,和我的需求也有些不一样。经过多次的修改和测试,终于成功通过。今天闲来无事,写个博文,以备下次需要做好笔记。话不多说,把过程写下:

1.首先创建一个自定义注解,如下:

@Target({ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

public @interface RecordLog {
}
2.写一个过滤方法,这个方法是实现MethodIntherceptor接口的invoke方法

public class LogAroundInterceptor implements MethodInterceptor {
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
return returnObject;
}

3.在springapplicationContext.xml文件里需要对我们的切面和注解进行配置。

4.我的实体类common

@RecordLog
public void update(User user, User opeartor, HttpServletRequest request) {
UserDao userDao = new UserDaoImpl();
userDao.updateUser(user);
System.out.println(“修改成功“);
}

5.servlet测试
UserDao userDao = new UserDaoImpl();
BeanFactory factory = new ClassPathXmlApplicationContext(“applicationContext.xml”);
Common c = (Common) factory.getBean(“common”);
User user = new User();
user.setId(2);
user.setName(““);
user.setPassword(“123456”);
user.setAge(18);
user.setSex(““);
User opeartor = userDao.findAllUserById(3);
User oldUser = userDao.findAllUserById(2);
HttpSession session = request.getSession();
session.setAttribute(“oldUser”, oldUser);
c.update(user, opeartor, request);

测试结果:成功获得我所需要的新旧对象,以及操作人,时间,描述等都可以在getSysLog()方法中获取,至于如何添加就简单啦,就不写上了。
6.使用方法很简单了:在需要添加日志的方法上加上我们的注解@RecordLog就可以了(就像我common类里的update方法一样)。

Facebooktwittergoogle_pluslinkedinmail

Need a translation service?

Please enter your personal details and we will contact you shortly

Words translated by CCJK

146,096,379

We are Certified

Our Client Satisfaction

rating for previous quarte

4.00

Over 95% of our clients recommend our language services to others

Copyright © CCJK Technologies Co., Ltd. 2000-2017. All rights reserved.
TOP