Java动态代理抽象成工具类

简介: Java动态代理抽象成工具类

ProxyInvocationHandler工具类,增加业务可在工具类里增加实现


import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
    //会用这个类自动生成代理类
public class ProxyInvocationHandler implements InvocationHandler {
    private Object target;
    //被代理的接口
        public void setTarget(Object target) {
            this.target = target;
        }
        public Object getProxy(){
       return Proxy.newProxyInstance(this.getClass().getClassLoader(),target.getClass().getInterfaces(),this);
    }
    //处理代理实例并返回结果
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //静态代理的实质就是使用反射机制
        Object result = method.invoke(target, args);
        return result;
    }
}


User接口


public interface User {
    void findPeople();
}


User接口实现类


public class UserImpl implements User {
    @Override
    public void findPeople() {
        System.out.println("找一个人");
    }
}


通过工具类来实现代理


public class Client {
    public static void main(String[] args) {
        //真实角色
        UserImpl user = new UserImpl();
        //代理角色,不存在
        ProxyInvocationHandler proxyInvocationHandler = new ProxyInvocationHandler();
        proxyInvocationHandler.setTarget(user);//设置代理对象
        //动态生成代理类
        User proxy = (User) proxyInvocationHandler.getProxy();
        proxy.findPeople();
    }
}


相关文章
|
2天前
|
Java
JAVA工具类匹配重复或者连续的字符和符号
JAVA工具类匹配重复或者连续的字符和符号
8 2
|
3天前
|
算法 Java
基于java雪花算法工具类SnowflakeIdUtils-来自chatGPT
基于java雪花算法工具类SnowflakeIdUtils-来自chatGPT
12 3
|
2天前
|
设计模式 安全 Java
Java中的动态代理:原理与应用
Java中的动态代理:原理与应用
|
4天前
|
Java easyexcel
java开发excel导入导出工具类基于EasyExcel
java开发excel导入导出工具类基于EasyExcel
13 1
|
5天前
|
Java
java工具类调用service层,mapper层
java工具类调用service层,mapper层
8 1
|
9天前
|
Java 数据库连接
Java的数据库连接工具类的编写
Java的数据库连接工具类的编写
11 1
|
11天前
|
Java 数据安全/隐私保护 开发者
Java是一种完全支持面向对象编程的语言,其面向对象特性包括封装、继承、多态和抽象等
【6月更文挑战第18天】**面向对象编程(OOP)通过对象封装状态和行为,实现问题域的抽象。Java全面支持OOP,核心特性包括**: - **封装**:保护数据安全,隐藏内部细节。 - **继承**:子类继承父类属性和行为,促进代码重用。 - **多态**:一个接口多种实现,增强灵活性和扩展性。 - **抽象**:通过接口和抽象类抽离共性,简化复杂性。 **Java的OOP便于理解和解决复杂系统问题。**
24 3
|
15天前
|
监控 Java Spring
Java 动态代理详解与实战示例
Java 动态代理详解与实战示例
12 1
|
16天前
|
Java 数据安全/隐私保护
JAVA中MD5加密(MD5工具类)
JAVA中MD5加密(MD5工具类)
16 1
|
22天前
|
存储 设计模式 Java
Java语言中反射动态代理接口的解释与演示
Java语言中反射动态代理接口的解释与演示
15 1