jdk动态代理_代码

步骤:

1. 需要一个接口

2. 一个被代理的实现类 (实现步骤1的接口)

3. 实现InvocationHandler

 

代码:

UserService:

public interface UserService {
    public void saveUser();
}

UserServiceImpl:

public class UserServiceImpl implements UserService{
    @Override
    public void saveUser() {
        System.out.println("save user");
    }
}

MyInvocationHandler:

public class MyInvocationHandler implements InvocationHandler {
  // 需要被代理的对象target
private Object target; public MyInvocationHandler(Object target) { this.target = target; } // 增强方法 @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("print logs"); Object obj = method.invoke(target, args); return obj; } }

测试类:

public class TestProxy {
    public static void main(String[] args) {
        UserService us = new UserServiceImpl();
        UserService proxy  = (UserService)Proxy.newProxyInstance(UserService.class.getClassLoader(), new Class[]{UserService.class}, new MyInvocationHandler(us));
        proxy.saveUser();
    }
}

 

结果:

 

 ok

 

posted @ 2020-11-14 22:54  圣金巫灵  阅读(86)  评论(0)    收藏  举报