Spring AOP入门 (一)静态代理

开发中我们会需要对某些方法做日志记录。

一种最简单的方法是,先创建一个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;
}

这样便完成了静态代理的日志添加。

猜你喜欢

转载自alleni123.iteye.com/blog/1987390