使用java的Proxy实现AOP(面向切面编程)
2010-08-18 14:58
721 查看
本文是使用proxy实现面向切面编程。上一篇文章已经写过,aop是一种思想,跟怎么实现无关。这里就是以代理来实现以下功能:
在一个类中每个函数都需要判断用户是否是有权限对要调用的函数进行操作的。那么,可以知道,这个判断的操作是公共的,可以把这个判断的操作提取出来。
使用Proxy的前提知识是,将要被代理的类必须是实现了一些接口的类。
我们使用下面的 接口:
下面我们写代理类的实现:
每一次执行service调用aoptest函数的时候,代理类中的invoke函数都会被调用来判断用户是否有调用的权限,这样就做到了将用户权限判断从原来的代码中分离出来,做到了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的面向切面编程的思想。
相关文章推荐
- Spring学习笔记 —— AOP(面向切面编程) 之使用ProxyFactoryBean实现AOP
- Java利用动态代理模拟实现Spring的AOP(面向切面编程)功能的小实践
- 如何在WebApi中使用过滤器实现面向切面编程(AOP)
- 使用JDK中的Proxy技术实现AOP功能
- 使用JAVA中的动态代理实现数据库连接池(载自:http://www.ibm.com/developerworks/cn/java/l-connpoolproxy/)
- Java使用动态代理实现AOP
- 使用Java 动态代理实现AOP
- 面向切面编程(3):AOP实现机制
- Spring之注解实现aop(面向切面编程)
- 【C# / Pattern】C#中利用Attribute实现AOP(面向切面编程)
- Java笔记——面向切面编程(AOP模式)
- java使用动态代理来实现AOP(日志记录)的实例代码
- 15_传智播客Spring2.5视频教程_使用JDK中的Proxy技术实现AOP功能 2
- 面向切面编程(AOP)主要实现的目的是针对业务处理过程中的切面进行提取
- Java JDK 动态代理(AOP)使用及实现原理分析
- Spring(十一)使用Spring的注解方式实现面向切面技术AOP
- 使用JDK中的Proxy技术实现AOP功能[动态代理]
- Java面试--Spring技术要点--Spring AOP(面向切面编程)
- 使用Java实现面向对象程序设计2
- 使用java5的注解和Sping/AspectJ的AOP 来实现Memcached的缓存