当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

Spring AOP入门 (一)静态代理

发表于: 2013-12-09   作者:alleni123   来源:转载   浏览次数:
摘要: 开发中我们会需要对某些方法做日志记录。 一种最简单的方法是,先创建一个Logger对象。 public class Logger { public static void info(String info){ System.out.println(new Date()+"---> "+info); } } 任何需要做日志的
开发中我们会需要对某些方法做日志记录。

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

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

Spring AOP入门 (一)静态代理

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一.概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理
一.概念 代理是什么呢?举个例子,一个公司是卖摄像头的,但公司不直接跟用户打交道,而是通过代理
本篇文章将会介绍上一个例子中的源码执行情况,从中熟悉整个SpringAOP的一些概念和接口设计。 首先
本篇文章将会介绍上一个例子中的源码执行情况,从中熟悉整个SpringAOP的一些概念和接口设计。 首先
本篇文章将会介绍上一个例子中的源码执行情况,从中熟悉整个SpringAOP的一些概念和接口设计。 首先整
Spring的AOP实现方式----二: 自动代理的AOP实现 代码和上一篇基于代理的AOP实现是一样的。只是配置
Spring的AOP实现方式----二: 自动代理的AOP实现 代码和上一篇基于代理的AOP实现是一样的。只是配置
Spring的AOP实现方式主要有三种: 1、经典的基于代理的AOP实现 2、自动代理的AOP实现 3、AspectJ的AO
Spring的AOP实现方式主要有三种: 1、经典的基于代理的AOP实现 2、自动代理的AOP实现 3、AspectJ的AO
Spring AOP 应该是比较出名的了,今天说的是C#里的AOP,C#的AOP实现的方式有很多种,现在就先介绍静
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号