运行时替换静态类的方法

1、引入依赖

		<dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy-agent</artifactId>
        </dependency>

        <dependency>
            <groupId>net.bytebuddy</groupId>
            <artifactId>byte-buddy</artifactId>
        </dependency>

2、被替换的类和Mock类

AesUtils

public class AesUtils {
    public static String encrypt(String plainText) {
        return "enc(" + plainText + ")";
    }
}

AesUtilsMock

public class AesUtilsMock {
    public static String encrypt(String plainText) {
        return plainText;
    }
}

想要的效果是在生产环境使用AesUtils,本地调试使用AesUtilsMock
调用该工具类的接口

    @GetMapping("/test1")
    public String test1(String enc){
        return AesUtils.encrypt(enc);
    }

3、使用ByteBuddyAgent实现替换

    public static void main(String[] args) {
        SpringApplication.run(ApplicationMain.class);

        ByteBuddyAgent.install();
        new ByteBuddy()
                .redefine(AesUtilsMock.class)
                .name(AesUtils.class.getName())
                .make()
                .load(AesUtils.class.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent());

    }

改造前
在这里插入图片描述
改造后
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值