UserService接口
public interface UserService {
public Boolean login(String username, String password);
public void logout();
}
UserServiceImpl
public class UserServiceImpl implements UserService {
@Override
public Boolean login(String username, String password) {
System.out.println("login...");
if("admin".equals(username) && "password".equals(password)) {
return true;
}
return false;
}
@Override
public void logout() {
System.out.println("logout...");
}
}
UserServiceCGLIBProxy代理类
import org.springframework.cglib.proxy.MethodInterceptor; //引包别引入错了
import org.springframework.cglib.proxy.MethodProxy;
import java.lang.reflect.Method;
public class UserServiceCGLIBProxy implements MethodInterceptor {
@Override
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
long begin = System.currentTimeMillis();
Object returnVal = proxy.invokeSuper(obj, args);
long end = System.currentTimeMillis();
System.out.println("use time: "+(end-begin)+" ms");
return null;
}
}
测试类
public class UserTest {
public static void main(String[] args) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(UserService.class);
enhancer.setCallback(new UserServiceCGLIBProxy());
UserService userServiceProxy = (UserService) enhancer.create();
//System.out.println(userServiceProxy); //根据此名称推测底层是否使用了CGLIB动态代理
Boolean b = userServiceProxy.login("admin", "123");
System.out.println(b?"login ok":"login fail");
userServiceProxy.logout();
}
}
出现报错解决:
添加如下: