您的位置:首页 > 编程语言 > Java开发

使用java的Proxy实现AOP(面向切面编程)

2010-08-18 14:58 721 查看
本文是使用proxy实现面向切面编程。上一篇文章已经写过,aop是一种思想,跟怎么实现无关。这里就是以代理来实现以下功能:

在一个类中每个函数都需要判断用户是否是有权限对要调用的函数进行操作的。那么,可以知道,这个判断的操作是公共的,可以把这个判断的操作提取出来。

使用Proxy的前提知识是,将要被代理的类必须是实现了一些接口的类。

我们使用下面的 接口:

package com.lqw.service.impl;

import com.lqw.service.PersonService;

/**
 * @author Naughty610
 */
public class PersonServiceBean implements PersonService {
	
	private String user=null;
	
	public String getUser() {
		return user;
	}

	public void setUser(String user) {
		this.user = user;
	}
	
	public PersonServiceBean() {
		super();
	}

	public PersonServiceBean(String user) {
		super();
		this.user = user;
	}

	public void aoptest() {
		p("aoptest()函数被调用");
	}

	public void p(Object o) {
		System.out.println(o);
	}
}




下面我们写代理类的实现:

package junit.test;

import com.lqw.proxy.ProxyFactory;
import com.lqw.service.PersonService;
import com.lqw.service.impl.PersonServiceBean;

public class test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ProxyFactory factory = new ProxyFactory();
		PersonService psersonServiceBean = new PersonServiceBean();
		PersonService service=(PersonService)factory.creatProxyInstance(psersonServiceBean);
		service.aoptest();

	}

}










每一次执行service调用aoptest函数的时候,代理类中的invoke函数都会被调用来判断用户是否有调用的权限,这样就做到了将用户权限判断从原来的代码中分离出来,做到了aop的面向切面编程的思想。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: