PersonServiceBean.java
package com.allen.service.imp;
public class PersonServiceBean {
public String user = "";
public String getUser() {
return user;
}
public PersonServiceBean(){}
public PersonServiceBean(String user){
this.user=user;
}
public String getPersonName(Integer personid) {
System.out.println("我是getPersonName()");
return "AAAAA";
}
public void save(String name) {
System.out.println("我是Save()");
}
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);
}
CGLibFactory.java
package com.allen.aop;
import java.lang.reflect.Method;
import com.allen.service.imp.PersonServiceBean;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class CGLibFactory implements MethodInterceptor{
private Object targetObject;
public Object createProxyIntance (Object tarObject){
this.targetObject = tarObject;
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(this.targetObject.getClass());//添加非final修饰的类
enhancer.setCallback(this);
return enhancer.create();
}
@Override
public Object intercept(Object arg0, Method method, Object[] args,
MethodProxy methodProxy) throws Throwable {
PersonServiceBean bean = (PersonServiceBean) this.targetObject;
Object result = "";
if(bean.getUser()!=""){
result = method.invoke(targetObject, args);
}
return null;
}
}
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 proxyTest2(){
CGLibFactory factory = new CGLibFactory();
PersonServiceBean service = (PersonServiceBean) factory.createProxyIntance(new PersonServiceBean("asf"));
service.save("888");
}
}