注意:实现类没有接口
- 导包: spring-core-3.2.0.RELEASE.jar就可以一步到位
- 比之前多了一个生成代理
- 工厂方法有改动
- 对比上篇博客 JDK动态代理
工厂
package JDK_CGLIB_Proxy.copy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import org.springframework.cglib.proxy.Enhancer;
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
public class MyBeanFactory {
public static UserServiceImp getBeanServics() {
final UserServiceImp userServiceImp = new UserServiceImp();
final MyAspect myAspect = new MyAspect();
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(UserServiceImp.class);
enhancer.setCallback(new MethodInterceptor() {
public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodPront) throws Throwable {
// TODO Auto-generated method stub
myAspect.before();
Object object = method.invoke(userServiceImp, args);
myAspect.after();
return object;
}
});;
UserServiceImp userServiceImp2 = (UserServiceImp) enhancer.create();
return userServiceImp2;
}
}
事前洗手
做饭
事后洗手
---------
事前洗手
吃饭
事后洗手
---------
事前洗手
上厕所
事后洗手