没有接口实现类代理

简介: 没有接口实现类代理

问题的提出


正常的jdk动态代理和cglib代理都是通过传入实体类实现的,dubbo的消息提供者是没有接口的实现类的,那怎么实现的?


实现


接口


package com.proxynoimpl;
/**
 * @author CBeann
 * @create 2020-03-09 17:37
 */
public interface IEmailService {
    String selectById();
}


代理工厂


package com.proxynoimpl;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
 * @author CBeann
 * @create 2020-03-09 17:37
 */
public class FactoryProxy<T> implements InvocationHandler {
    private Class<T> proxyInterface;
    //这里可以维护一个缓存,存这个接口的方法抽象的对象
    FactoryProxy(Class<T> proxyInterface){
        this.proxyInterface = proxyInterface;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        if (method.getName().equals("selectById")){
            //String result = (String) method.invoke(proxyInterface,args);
            //这里可以得到方法抽象对象来调用真的的查询方法
            System.out.println("selectById调用成功");
        }
        return null;
    }
    public T getProxy(){
        return (T) Proxy.newProxyInstance(proxyInterface.getClassLoader(),new Class[]{proxyInterface},this);
    }
}


测试类


package com.proxynoimpl;
/**
 * @author CBeann
 * @create 2020-03-09 17:38
 */
public class AppStart {
    public static void main(String[] args) {
        FactoryProxy<IEmailService> emailService = new FactoryProxy(IEmailService.class);
        IEmailService subject2 = emailService.getProxy();
        subject2.selectById();
    }
}


测试结果


20.png

目录
相关文章
|
Java
类与接口介绍
在Java中,类和接口是两种重要的概念,用于描述对象的属性和行为。它们是面向对象编程的基础,用于组织和管理代码。 类(Class)是一种模板或蓝图,用于创建对象。它定义了对象的属性和行为。类是Java中最基本的组织单元,所有的对象都是根据类来创建的。类由字段(属性)和方法组成。字段表示对象的状态或属性,而方法表示对象的行为或操作。 以下是一个简单的Java类的示例: ```java public class Person { // 字段 private String name; private int age; // 构造方法 publi
59 0
|
6月前
|
Java
如何在类中实现并调用多个接口中的共享方法。
如何在类中实现并调用多个接口中的共享方法。
49 1
课外作业(2)接口+工厂方法 文件上传题 1. 接口作业题
课外作业(2)接口+工厂方法 文件上传题 1. 接口作业题
|
6月前
|
SQL Java 数据库连接
JAVAJDBC中常用的接口和类
JAVAJDBC中常用的接口和类
85 0
|
设计模式 Java
反射和代理
反射和代理
74 0
|
Java
查看JDK动态代理生成的类的内容
首先我们先定义一个接口: public interface PersonInter { String test(String str); }接着就是我们想的要生成的JDK代理类源码的代码: public class JdkProxy...
1517 0
代理与反射(一)
代理与反射(一)
95 0
|
监控
代理与反射(二)
代理与反射(二)
96 0
JDK动态代理为什么只能代理有接口的类?
JDK动态代理为什么只能代理有接口的类?