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
 
                    
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号