import lombok.Data;
@Data
public class User {
private String name;
public User() {
}
public User(String name) {
this.name = name;
}
}
public class UserImpl {
@Override
public void addUser(User u) {
System.out.println("新增用户:"+u.getName());
}
}
import org.springframework.cglib.proxy.MethodInterceptor;
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
public class UserIntercepter2 implements MethodInterceptor {
@Override
public Object intercept(Object o, Method method, Object[] args, MethodProxy proxy) throws Throwable {
if(args !=null &&args.length>0&& args[0] instanceof User){
User u = (User)args[0];
if(u.getName().length()<3){
System.out.println("----------------------");
System.out.println("用户名长度小于3");
throw new RuntimeException("用户名长度小于3");
}
}
Object ob = proxy.invokeSuper(o,args);
return ob;
}
}
import org.springframework.cglib.proxy.Enhancer;
public class TestCglib {
public static void main(String[] args) {
User u = new User("l333h");
Enhancer enhancer = new Enhancer();
//集成
enhancer.setSuperclass(UserImpl.class);
enhancer.setCallback(new UserIntercepter2());
//创建
UserImpl user = (UserImpl) enhancer.create();
user.addUser(u);
}
}