如何使用动态代理实现Java面向切面编程

时间:2019-06-13 03:07   tags: 澳门拉斯维加斯官网  

super();

@Override

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

Object result = null;

}

public class ProxyFactory implements InvocationHandler {

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

import java.lang.reflect.Method;

super();

}

}}

this.tarjectObject = obj;

}

解耦是程序员编码开发过程中一直追求的,AOP(面向切面编程)也是为了解耦所诞生的,那么如何使用动态代理实现Java面向切面编程呢?今天华清远见Java学院就和大家分享下使用动态代理实现Java面向切面编程的具体方法。

return user;

测试类如下:

import java.lang.reflect.InvocationHandler;

public void setUser(String user) {

import com.lqw.proxy.ProxyFactory;

}

接口实现类(也就是我们要代理的类,把其中的每一个方法<这里只写一个aoptest方法>的用户权限判断使用aop的思想提取出来)如下:

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

import com.lqw.service.impl.PersonServiceBean;

result = method.invoke(serviceBean, args);

this.user = user;

代理类中invoke函数主要的功能就是进行用户判断。这里比较简单,单纯是判断是否为null,不为null,就可以去执行想要调用的函数了。

}

public void p(Object o) {

private String user=null;

}

我们使用下面的接口:

throws Throwable {

import com.lqw.service.PersonService;

ProxyFactory factory = new ProxyFactory();

import com.lqw.service.PersonService;

service.aoptest();}}

import com.lqw.service.impl.PersonServiceBean;

}

PersonServiceBean serviceBean = (PersonServiceBean) this.tarjectObject;

每一次执行service调用aoptest函数的时候,代理类中的invoke函数都会被调用来判断用户是否有调用的权限,这样就做到了将用户权限判断从原来的代码中分离出来,做到了aop的面向切面编程的思想。

PersonService service=(PersonService)factory.creatProxyInstance(psersonServiceBean);

public interface PersonService {

public String getUser() {

public PersonServiceBean(String user) {

this.user = user;

public PersonServiceBean() {

p("aoptest()函数被调用");

PersonService psersonServiceBean = new PersonServiceBean();

return result;}}

import java.lang.reflect.Proxy;

public abstract void aoptest();

private Object tarjectObject;

}

return Proxy.newProxyInstance(this.tarjectObject.getClass()

public Object creatProxyInstance(Object obj) {

System.out.println(o);

public static void main(String[] args) {

.getClassLoader(), this.tarjectObject.getClass()

public class test {

public void aoptest() {

.getInterfaces(), this);

public Object invoke(Object proxy, Method method, Object[] args)

public class PersonServiceBean implements PersonService {

if (serviceBean.getUser() != null) {