第一步 创建类,实现接口 MethodInterceptor
第二步实现接口里面的方法intercept,在这个方法里面写增强的逻辑
第三步在类里面,创建方法,让这个方法返回子类代理对象
publicclass CGLib {
publicstaticvoid main(String[] args) {
MyUserDao myUserDao = new MyUserDao();
UserDao userDao = myUserDao.createUserDao();
userDao.find();
}
}
//增强UserDao类里面find方法
class MyUserDao implements MethodInterceptor {
//创建方法,让这个方法返回子类代理对象
public UserDao createUserDao() {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(UserDao.class);
enhancer.setCallback(this);
return (UserDao) enhancer.create();
}
//实现接口里面的方法
public Object intercept(Object obj, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
//让UserDao类里面find方法执行
methodProxy.invokeSuper(obj, objects);
//增强逻辑
System.out.println("增强.................");
returnnull;
}
}
class UserDao {
publicvoid find() {
System.out.println("userdaofind.........");
}
}