一种最简单的方法是,先创建一个Logger对象。
public class Logger { public static void info(String info){ System.out.println(new Date()+"---> "+info); } }
任何需要做日志的方法,比如UserDao的add()方法,
public void add(User user) { Logger.info("user:"+user.getUsername() +"is added"); this.getSession().save(user); }
这样是可行的, 但是这样会加入大量的日志代码在我们的底层代码中。
Spring提供了AOP(Aspect Oriented Programming),也就是面向切面编程。
这个方法类似于动态代理,可以在运行期对代理的方法进行操作。
这里说一说怎么用Spring的AOP来添加日志。
首先创建一个UserProxyDao,实现IUserDao接口:
@Component("userProxyDao") public class UserProxyDao implements IUserDao { @Inject private IUserDao userDao; @Override public void add(User user) { Logger.info("添加了用户: "+user.getUsername()); userDao.add(user); } @Override public void update(User user) { Logger.info("更新了用户: "+user.getUsername()); userDao.update(user); } @Override public void delete(int id) { Logger.info("删除了用户: "+id); userDao.delete(id); }
此时在UserService中使用这个代理对象来进行dao操作。
@Service("userService") public class UserService implements IUserService { @Resource(name="userProxyDao") private IUserDao userDao; }
这样便完成了静态代理的日志添加。