优雅的替换第三方jar包中的类!#编程

createh51个月前 (04-28)技术教程12

优雅的替换第三方jar包中的类。

优雅的替换掉第三方jar包中的类,需求背景是:项目中依赖第三方jar包需要对其进行扩展或修复未知的bug,但是第三方类库中没有提供扩展点,无法使用继承对其改造。通常做法第一种是将jar包下载下来重新修改然后发布在私有仓库中。第二种做法是直接将需要的代码全部复制到当前项目中进行修改。

当然还有种更优雅的实现!我们只需要在pom中引入这个插件就可以实现!这个插件是maven-心绞痛-plugin插件,想对hutool这个jar包中的某个类进行改造,这个插件的原理是将这个jar包进行解压,只需要在当前项目中有同包同类的文件,在解压的时候它就可以做到不进行覆盖,这样就达到了本地文件替换原jar包中的class文件的目的!

在这里我们要使用hutool进行输出json,要在输出之前打印3行代码。这里新建一个同包同类的文件,包也是cn.hutool.json,类名也一样。把源码拷贝进来,在这里进行打印三行代码,我们来验证一下。接下来启动一下项目,项目启动成功。然后我们可以发现在进行输出json的时候进行了三段打印,这样就实现了本地文件替换jar包中的文件达到了我们想要的目的!

今天就讲到这,谢谢大家!

相关文章

自定义代码生成器(上)(推荐几个代码自动生成的工具)

1 概述1.1 介绍在项目开发过程中,有很多业务模块的代码是具有一定规律性的,例如controller控制器、service接口、service实现类、mapper接口、model实体类等等,这部分代...

在 SpringBoot 中如何对数据进行脱敏显示

1、背景基于数据安全与隐私保护、防止信息泄露风险、遵守隐私法规、增强用户安全感等方面的考虑,现在的应用,一般会对对个人信息或敏感数据字段进行脱敏,比如将手机号或信用卡号等中间的若干位数字替换为***等...

Redis性能优化:scan命令替换keys命令的用法和原理解析

一、keys命令用法keys命令用于返回指定的正则表达式所匹配的所有key的列表,其所检索的是Redis当前所使用的数据库(默认为0号数据库)的所有key,用法如下:1. *匹配数据库中所有key...

MyBatis十大高频坑点避雷指南:程序员血泪总结

1. #{ }和${ }混淆使用问题:#{}是预编译处理,${}是字符串替换。使用${}可能导致SQL注入。错误示例:@Select("select * from user where nam...

Gateway网关在url参数带有特殊字符的情况下转发失败(响应400)

本文主要分享了,SpringCloud Gateway网关在url参数带有空格或者特殊字符的情况下,转发失败导致响应错误码400的解决方案。响应400错误码的2种场景:1.参数带空格,Gateway会...