Различные прокси Aop, созданные для одного и того же объекта при использовании методов setTarget и ProxyFactory (Object target) - PullRequest
0 голосов
/ 06 сентября 2018

Вот код

//IUserService is a interface
IUserService userService=new UserServiceImpl();

NameMatchMethodPointcut pointcut=new NameMatchMethodPointcut();
pointcut.addMethodName("save*");


LogAdvice logAdvice=new LogAdvice();


Advisor advisor=new DefaultPointcutAdvisor(pointcut,logAdvice);

//when set the target in constructor JdkDynamicAopProxy will be created
//ProxyFactory proxyFactory=new ProxyFactory(userService);
ProxyFactory proxyFactory=new ProxyFactory();
proxyFactory.addAdvisor(advisor);
//if use setTarget to set the target ObjenesisCglibAopProxy will be created
proxyFactory.setTarget(userService);

IUserService proxy=(IUserService) proxyFactory.getProxy();

proxy.queryUser();
proxy.saveUser();

И разница между установленной целью с использованием setTarget или Constructor заключается в том, что когда в Constructor есть setInterfaces(ClassUtils.getAllInterfaces(target));, но не в setTarget, я не знаю почему, как я думаю, начиная с IUserService это интерфейс, JdkDynamicAopProxy должен быть создан независимо от того, как я установил цель? Версия исходного кода пружины 5.0.0.BUILD-SNAPSHOT

...