zoukankan      html  css  js  c++  java
  • SPRINGBOOT 热加载JAR包

    1.概要

    springboot 的程序一般打包程成jar包。我们有些情况下,我们需要对程序进行扩展,我们没办法对已打包的程序进行修改。

    我们希望的做法是:

    1.将我们的一些接口打包。

    2.在扩展包时,我们引入接口包。

    3.实现接口后,打成JAR包。

    4.动态加载这些jar包,让后将我们的类动态注册到spring容器中。

    2.实现过程

    2.1 定义接口

    package com.redxun.handler;
    
    public interface IDemoHandler {
    
        String handler(String name);
    }

    我们将这个接口打包。

    2.2 实现接口

    <dependency>
                <groupId>org.redxun</groupId>
                <artifactId>interface</artifactId>
                <version>1.0</version>
            </dependency>

    引入接口包

    package com.example.demo;
    
    import com.redxun.handler.IDemoHandler;
    
    public class DemoHandler implements IDemoHandler {
    
        @Override
        public String handler(String s) {
            System.err.println("hello world");
            return "hello:" +s;
        }
    }

    实现接口。

    2.3 动态加载JAR包

    @RestController
    @RequestMapping("/user/org/osUser")
    public class DemoController {
    
        @GetMapping(value = "loadClass")
        public String loadClass() throws ClassNotFoundException {
            String pluginClass="com.example.demo.DemoHandler";
            ClassLoader classLoader = ClassLoaderUtil.getClassLoader("file:/D:/demo-1.0.jar");
    
            Class<?> clazz = classLoader.loadClass(pluginClass);
    
            SpringUtil.registerBean("demoHandler",clazz);
    
            IDemoHandler plugin = (IDemoHandler)SpringUtil.getBean("demoHandler");
    
            String str= plugin.handler("RAY");
            return str;
        }
    }

    这样我们就实现了动态扩展,使用这种方式,我们就可以使用插件的方式对我们的微服务应用进行扩展

  • 相关阅读:
    机器学习之--画图补充
    机器学习之--KNN算法简单实现
    redhat centos yum源的安装
    redhat6.5 linux 安装mysql5.6.27
    bash 截取字符串
    redhat vim编辑器永久添加行号及搜索
    Orthomcl的详细使用
    InterProScan 5.25-64.0 安装和使用
    paml正选择处理时序列里有终止密码子怎么处理掉
    R语言putty中直接使用X11(Xming)绘图
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/15717650.html
Copyright © 2011-2022 走看看