@Test public void proxyTest() { JDKProxyFactory factory = new JDKProxyFactory(); PeopleService peopleService = (PeopleService) factory.createProxyInstance(new PeopleServiceBean("张三")); peopleService.save("hello"); }
package com.tiger.aop; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import com.tiger.service.impl.PeopleServiceBean; public class JDKProxyFactory implements InvocationHandler { private Object targetObject; public Object createProxyInstance(Object targetObject) { this.targetObject = targetObject; return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(), this.targetObject.getClass().getInterfaces(), this); } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { PeopleServiceBean bean = (PeopleServiceBean) this.targetObject; Object result = null; if(bean.getUser() != null) { result = method.invoke(targetObject, args); } return result; } }
package com.tiger.service; public interface PeopleService { public void save(String name); public void update(String name,Integer peopleid); public String getPeopleName(Integer peopleid); }
package com.tiger.service.impl; import com.tiger.service.PeopleService; public class PeopleServiceBean implements PeopleService { private String user = null; public PeopleServiceBean(){} public PeopleServiceBean(String user) { this.user = user; } public void save(String name) { System.out.println("我是save()方法"); } public void update(String name, Integer peopleid) { System.out.println("我是update()方法"); } public String getPeopleName(Integer peopleid) { System.out.println("我是getPeopleName()方法"); return "xxx"; } public String getUser() { return user; } }
结果:
我是save()方法