JDKの中Proxyダイナミックエージェントを利用してSpringのAOP技術を実現します。
1417 ワード
まず、設計モード静的エージェントと動的エージェントの学習を与える。
http://layznet.iteye.com/blog/1182924 いいですね
そして、私達はAOPを実現するために、私達が依頼したすべての方法の呼び出しに対してブロックを実現するように要求します。
エージェントが生成した工場
テスト:
http://layznet.iteye.com/blog/1182924 いいですね
そして、私達はAOPを実現するために、私達が依頼したすべての方法の呼び出しに対してブロックを実現するように要求します。
エージェントが生成した工場
package cn.gbx.aop;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import cn.gbx.service.impl.PersonService;
public class ProxyFactory 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);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
PersonService service = (PersonService) this.targetObject;
Object result = null;
if (service.getUser() != null) {
result = method.invoke(this.targetObject, args);
}
return result;
}
}
テスト:
public class AOPTest {
@Test
public void aopTest(){
ProxyFactory factory = new ProxyFactory();
PersonService personService = (PersonService)factory.createProxyInstance(new PersonServiceImpl("xx"));
personService.save();
}
}