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

使用JDK中的Proxy技术实现AOP功能

2012-12-09 22:19 801 查看
PersonServiceBean.java

package com.allen.service.imp;

import com.allen.service.PersonService;

public class PersonServiceBean implements PersonService {
public String user = "";

public String getUser() {
return user;
}

public PersonServiceBean(){}

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

@Override
public String getPersonName(Integer personid) {
System.out.println("我是getPersonName()");
return "AAAAA";
}

@Override
public void save(String name) {
System.out.println("我是Save()");

}

@Override
public void update(String name) {
System.out.println("我是update()");
}

}


PersonService.java

package com.allen.service;

public interface PersonService {
public void save (String name);
public void update(String name);
public String getPersonName(Integer personid);
}


JDKProxyFactory.java

package com.allen.aop;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

import com.allen.service.imp.PersonServiceBean;

public class JDKProxyFactory implements InvocationHandler {
private Object targeObject;

public Object createProxyIntance(Object targetObject){
this.targeObject = targetObject;
return Proxy.newProxyInstance(this.targeObject.getClass().getClassLoader(),
this.targeObject.getClass().getInterfaces(), this);
}

@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
PersonServiceBean bean = (PersonServiceBean) this.targeObject;
Object result =null;
if(bean.getUser()!=""){
result  = method.invoke(targeObject, args);
}
return result;
}
}


这是测试用的 junit4

AopTest.java

package junit.test;

import org.junit.BeforeClass;
import org.junit.Test;

import com.allen.aop.CGLibFactory;
import com.allen.aop.JDKProxyFactory;
import com.allen.service.PersonService;
import com.allen.service.imp.PersonServiceBean;

public class AopTest {

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@Test public void proxyTest(){
JDKProxyFactory factory = new JDKProxyFactory();
PersonService service = (PersonService) factory.createProxyIntance(new PersonServiceBean("asf"));
service.save("888");
}
}


不管评论什么 我都接受!!!






                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: