当前位置: 首页 > news >正文

SpringBoot 动态加载jar包,动态配置

一、概述

1、背景

目前数据治理服务中有众多治理任务,当其中任一治理任务有改动需要升级或新增一个治理任务时,都需要将数据治理服务重启,会影响其他治理任务的正常运行。

2、目标
  • 能够动态启动、停止任一治理任务

  • 能够动态升级、添加治理任务

  • 启动、停止治理任务或升级、添加治理任务不能影响其他任务

3、方案
  • 为了支持业务代码尽量的解耦,把部分业务功能通过动态加载的方式加载到主程序中,以满足可插拔式的加载、组合式的部署。

  • 配合xxl-job任务调度框架,将数据治理任务做成xxl-job任务的方式注册到xxl-job中,方便统一管理。

二、动态加载

1、自定义类加载器

URLClassLoader 是一种特殊的类加载器,可以从指定的 URL 中加载类和资源。它的主要作用是动态加载外部的 JAR 包或者类文件,从而实现动态扩展应用程序的功。为了便于管理动态加载的jar包,自定义类加载器继承URLClassloader。

package cn.jy.sjzl.util;import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;/**
 * 自定义类加载器
 *
 * @author lijianyu
 * @date 2023/04/03 17:54
 **/
public class MyClassLoader extends URLClassLoader {    private Map

相关文章:

  • 单片机学习路线(简单介绍)
  • Git分支和迭代流程
  • Xubuntu16.04系统中修改系统语言和系统时间
  • 代码随想录算法训练营day14||二叉树part01、理论基础、递归遍历、迭代遍历、统一迭代
  • 嵌入式Qt 第一个Qt项目
  • Android矩阵Matrix动画缩放Bitmap移动手指触点到ImageView中心位置,Kotlin
  • 17 ABCD数码管显示与动态扫描原理
  • 【AI】安装ubuntu20.04教程(未完待续)
  • WPF是不是垂垂老矣啦?平替它的框架还有哪些
  • Google刚刚推出了图神经网络Tensorflow-GNN
  • 视频讲解:优化柱状图
  • BUGKU-WEB GET
  • Golang中的fmt包:格式化输入输出的利器
  • Chrome 沙箱逃逸 -- Plaid CTF 2020 mojo
  • Android 移动应用开发 创建第一个Android项目
  • ES6之路之模块详解
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • LeetCode29.两数相除 JavaScript
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Redux系列x:源码分析
  • SSH 免密登录
  • Sublime text 3 3103 注册码
  • Vue小说阅读器(仿追书神器)
  • 第2章 网络文档
  • 分享几个不错的工具
  • 工程优化暨babel升级小记
  • 聊聊flink的BlobWriter
  • 前端性能优化——回流与重绘
  • 前端自动化解决方案
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • MyCAT水平分库
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (转)Mysql的优化设置
  • .“空心村”成因分析及解决对策122344
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net core 依赖注入的基本用发
  • .NET Remoting学习笔记(三)信道
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .Net环境下的缓存技术介绍
  • @Transient注解
  • [ JavaScript ] JSON方法
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [Android]一个简单使用Handler做Timer的例子
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [CareerCup] 17.8 Contiguous Sequence with Largest Sum 连续子序列之和最大
  • [CISCN2021 Quals]upload(PNG-IDAT块嵌入马)
  • [hdu 2896] 病毒侵袭 [ac自动机][病毒特征码匹配]
  • [JS入门到进阶] 哎,被vite小坑了一波,大家记得配置build.cssTarget为‘chrome61‘
  • [leetcode] 103. 二叉树的锯齿形层次遍历