package com.gw.demo09.aop.jdk;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
//生成代理对象,有目标类与切面类织入形成
public class MyBeanFactory {
public static UserService getUserService() {
// 创建目标类对象
UserService userService = new UserServiceImpl();
// 创建切面类对象
MyAspect myAspect = new MyAspect();
/*
* 1、ClassLoader
* MyBeanFactory.class.getClassLoader()
* userService.getClass().getClassLoader()
*
* 2.Class<?>[] interfaces
* userService.getClass().getInterfaces()
*/
UserService uService = (UserService) Proxy.newProxyInstance(userService.getClass().getClassLoader(), userService.getClass().getInterfaces(),
new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
myAspect.before();
Object obj = method.invoke(userService, args);
myAspect.after();
return obj;
}
});
return uService;
}
}