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;
        }
    }

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

  • 相关阅读:
    保护【大数据】应用的步骤和工具
    提高UI设计效率的4个技巧
    你学会UI设计了吗?
    Android 零散知识点整理
    PHP面试和PHP开发者都应掌握的10个问题
    MySQL 中如何存储 emoji ?
    想在网上保持匿名?教你用Linux如何实现!
    数据库入门之运行原始 SQL 查找
    PHP之取得当前时间函数方法
    【在线】使用在线软件来完成任务
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/15717650.html
Copyright © 2011-2022 走看看