美文网首页
JDK 动态代理

JDK 动态代理

作者: IT_IOS_MAN | 来源:发表于2021-01-06 15:01 被阅读0次
    • Factory class 文件

    public class ProxyFactory {
      
        private Object target;
    
        public ProxyFactory(Object target) {
            super();
            this.target = target;
        }
    
        /**
        * 得到代理对象
        */
        public Object getProxyFactory() {
             /**
             * 参数说明
             * ClassLoader 类加载器
             * Interfaces 目标类实现的所有接口数组
             * InvocationHandler 当代理对象被创建后, 调用目标对象的方法时触发的方法回调
             */
            return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() {
                /**
                 * 
                 * @param proxy 代理对象
                 * @param method 用户调用目标的方法
                 * @param args 用户调用目标的参数
                 */
                @Override
                public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
                    // 前置增强
                    Object invoke = method.invoke(target, args);
                    // 后置增强
                    return invoke;
                }
            });
        }
    }
    
    
    • mian 文件

    public static void main(String[] args) {
    
        UserDaoImpl daoImpl = new UserDaoImpl();
    
        ProxyFactory proxyFactory = new ProxyFactory(daoImpl);
    
        UserDaoImpl daoImplFactory = (UserDaoImpl)proxyFactory.getProxyFactory();
    
        daoImplFactory.play();
            
    }
    

    相关文章

      网友评论

          本文标题:JDK 动态代理

          本文链接:https://www.haomeiwen.com/subject/myvyoktx.html