插件式编程SBP框架极简教程(基于SpringBoot)

简介: 插件式编程SBP框架极简教程(基于SpringBoot)

一、前言


笔者在工作中遇到经常更改服务层的代码,就只是更改一小部分,但是就需要重启整个程序才能完成编译,既费时又费力。想寻求一种方法,能够在不重新编译整个应用程序的情况下更新服务层代码。想到的第一个方法是通过动态加载jar文件来更新,但是SpringBoot应用上下文还没搞太清楚,后续可以按照这个思路走下去;第二个方法是把需要更新的服务层以插件的方式运行,就是今天所要介绍的SBP框架,它能够将使得主程序模块加载其它模块的控制器、服务层、数据访问层的代码,完成插件式的编程,实现插件的动态的启动、停止以及删除。


二、背景


项目sbp是基于springboot做的封装框架,已经初步成熟,可以投入到项目中使用。如何快速理解sbp项目,没有比跑通更为直接的了,就像玩游戏先玩后摸索。

由于sbp项目没有清晰地叙述构建插件编程的流程,因此又查询基于sbp的使用仓库,于是查找到sbp-test用来测试sbp的使用。

而sbp-test项目又引入了很多杂项,因此我就精简了该项目,用于新手快速上手跑通sbp项目。代码我也上托管到了Git仓库,传送门在此,可以直接下载享用。


三、项目简介


整个项目的目录结构如下所示。主模块是application,是一个springboot-web应用。

1666244687610.jpg

主程序的资源文件内容如下。


server.port: 8071
spring:
  mvc:
    static-path-pattern: /**
  resources:
    add-mappings: true
    cache:
      period: 3600
  sbp:
    runtime-mode: development
#    runtime-mode: deployment
    plugins-root: plugins
    enabled: true
    lib-directories:
      - "libs"
#    auto-start-plugin: false
    classes-directories:
      - "target/classes"
#      - "out/production/classes"
#      - "out/production/resources"
#    controller:
#      base-path: "fr/trouillet"

其中plugins文件夹里包含两个插件a、b。

在这两个插件里分别实现了两个控制器。其中a插件的控制器代码如下。


@RestController
@RequestMapping(value = "/aplugin")
public class APluginController {
    @RequestMapping(value = "/name")
    public String name() {
        return "aplugin";
    }
}

b插件的控制器代码如下。


@RestController
@RequestMapping(value = "/bplugin")
public class BPluginController {
    @RequestMapping(value = "/name")
    public String name() {
        return "bplugin";
    }
}


四 、看效果


4.1 测试主程序接口


接口地址为:http://127.0.0.1:8071/plugins/id

测试结果:

1666245025479.jpg


4.2 测试A插件程序接口


接口地址为:http://127.0.0.1:8071/aplugin/name

测试结果:

1666245050803.jpg


4.3 测试B插件程序接口


接口地址为:http://127.0.0.1:8071/bplugin/name

测试结果:

1666245072375.jpg


五 、展望


现在依旧不是需要的结果,这是直接运行起来的结果,不是动态的加载。后续再进一步研究。


相关文章
|
10天前
|
Web App开发 编解码 Java
B/S基层卫生健康云HIS医院管理系统源码 SaaS模式 、Springboot框架
基层卫生健康云HIS系统采用云端SaaS服务的方式提供,使用用户通过浏览器即能访问,无需关注系统的部署、维护、升级等问题,系统充分考虑了模板化、配置化、智能化、扩展化等设计方法,覆盖了基层医疗机构的主要工作流程,能够与监管系统有序对接,并能满足未来系统扩展的需要。
39 4
|
27天前
|
JavaScript 前端开发 Java
基于SpringBoot+Vue实现前后端交互功能(详解Vue框架机制)
基于SpringBoot+Vue实现前后端交互功能(详解Vue框架机制)
|
2月前
|
存储 Java 数据库
|
3月前
|
NoSQL Java Redis
springboot搭建后台框架 (二)整合Redis
springboot搭建后台框架 (二)整合Redis
41 0
|
3月前
|
SQL Java 关系型数据库
springboot搭建后台框架 (一)整合tkMapper
springboot搭建后台框架 (一)整合tkMapper
19 0
|
2月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
3月前
|
缓存 安全 Java
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
Shiro框架以及Spring Boot整合Shiro
|
22天前
|
SQL Java 数据库连接
【mybatis】第一篇,Springboot中使用插件PageHelper不生效解决方案
【mybatis】第一篇,Springboot中使用插件PageHelper不生效解决方案
|
6天前
|
安全 Java Maven
[AIGC] Spring Boot中的切面编程和实例演示
[AIGC] Spring Boot中的切面编程和实例演示
|
7天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例