范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

springbrick为动态扩展系统而生的插件开发框架

  背景
  在当下后端市场,还是以spring-boot为核心框架进行系统开发,本框架可以在spring-boot系统上进行插件式的开发,将插件当做一个mini版本的spring-boot进行系统扩展开发,可以解决如下痛点:在To-B系统场景中,不同甲方会有不同的需求,在不打分支和改动系统核心代码的前提下,可以在插件中进行扩展开发特定功能,不同甲方使用不同插件,完美解决非核心系统的扩展功能开发,例如扩展中台系统的不同需求。在To-C系统场景中,可以在主程序通过定义java-interface,在插件中做不同实现,来达到动态扩展系统功能。在开发中,由于引入了不同版本的依赖,导致系统无法运行,本框架可以完美解决在不同插件中定义不同版本的依赖,从底层进行隔离,以解决引入不同版本依赖冲突的问题。比如可以完美解决系统同时连接数据库mysql-5和mysql-8版本。在开发中,不同插件依赖不同框架的功能,可以按需引入。比如在插件A引入连接mysql、在插件B引入连接elasticsearch、在插件C引入连接oracle。在插件中,可以任意集成不同的非web类型的springboot-xx-starter,然后将不同插件功能组装起来,以达到一个统一对外提供服务的完整系统,实现系统组装化、插拔化开发。在不重启主程序的前提下,对插件进行动态的安装、卸载、启动、停止。介绍
  该框架可以在spring-boot项目上开发出插件功能,在插件中可以和spring-boot使用方式一模一样。使用了本框架您可以实现如下需求:在插件中,您可以当成一个微型的spring-boot项目来开发,简单易用。在插件中扩展出系统各种功能点,用于系统灵活扩展,再也不用使用分支来交付不同需求的项目了。在插件中可以集成各种框架及其各种spring-boot-xxx-starter。在插件中可以定义独立依赖包了,再也不用在主程序中定义依赖包了。可以完美解决插件包与插件包、插件包与主程序因为同一框架的不同版本冲突问题了。各个插件可以定义同一依赖的不同版本框架。无需重启主程序,可以自由实现插件包的动态安装部署,来动态扩展系统的功能。插件也可以不依赖主程序独立集成微服务模块。~~~等等,您可以丰富想象该框架给您带来哪些迫切的需求和扩展,以实现系统的 低耦合、高内聚、可扩展 的优点。 特性简化了框架的集成步骤,更容易上手。插件开发更加贴近spring-boot原生开发。支持两种模式开发:  隔离模式、共享模式 , 可自主根据需要灵活选择使用。 使用Maven打包插件,支持对插件的自主打包编译。目前支持:开发打包:将插件打包成开发环境下的插件(仅需打包一次)。生产打包:将插件打包成一个jar、zip、文件夹等。自主的开发的类加载器,支持插件定义各种的依赖jar包。在插件中可以集成各种框架及其各种spring-boot-xxx-starter,比如集成mybatis、mybatis-plus、spring-jpa等。动态安装、卸载、启动、停止插件。 主程序和插件类隔离, 有效避免主程序与插件、插件与插件之间的类冲突。 架构
  主程序配置集成1. 引入框架依赖   com.gitee.starblues   spring-brick   ${latest.version} 2. 在配置文件加入配置plugin:   runMode: dev   mainPackage: com.gitee.starblues.example   pluginPath:      - D://project//plugins(替换为自己环境下插件目录)配置说明:
  runMode: 运行模式, 开发环境: dev; 生产环境: prod。dev环境下,只适用于在idea环境下开发调试,prod环境只能加载打包的插件,比如jar、zip等,插件打包详见: 插件打包详细说明
  mainPackage: 主程序扫描的包名。
  pluginPath: 插件目录或者插件上级目录,可配置多个。详细配置见:https://www.yuque.com/starblues/iuyk4y/pm8x4g3. 改造 Spring-Boot 启动类在main类中实现框架引导类SpringBootstrap,在run方法中使用和SpringBoot启动方式一致的实现。在main方法中使用SpringMainBootstrap进行引导启动。具体实现如下:import com.gitee.starblues.loader.launcher.SpringMainBootstrap; import com.gitee.starblues.loader.launcher.SpringBootstrap; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;  @SpringBootApplication public class Application implements SpringBootstrap {      public static void main(String[] args) {         // 该处使用 SpringMainBootstrap 引导启动         SpringMainBootstrap.launch(Application.class, args);     }      @Override     public void run(String[] args) throws Exception {         // 在该实现方法中, 和 SpringBoot 使用方式一致         SpringApplication.run(Application.class, args);     } }4. 打包主程序主程序使用maven命令:mvn clean install进行打包插件配置集成1. 引入依赖     org.springframework.boot   spring-boot-starter   ${和主程序一致的springboot版本}       com.gitee.starblues   spring-brick-bootstrap   ${latest.version}        主程序的 groupId   主程序的 artifactId   主程序 version   provided 2. 定义插件引导类
  注意:插件包名不能和主程序包名一致,如需一致,需遵循:插件包名范围小于等于主程序包名。
  详细规则可见: https://www.yuque.com/starblues/spring-brick-3.0.0/siet7b
  定义插件main入口类, 继承SpringPluginBootstrap类, 然后在main函数中实例化当前引导类,并执行run方法即可。实现如下:import com.gitee.starblues.bootstrap.SpringPluginBootstrap; import org.springframework.boot.autoconfigure.SpringBootApplication;  @SpringBootApplication public class ExamplePlugin extends SpringPluginBootstrap {          public static void main(String[] args) {         new ExamplePlugin().run(args);     }      }3. 配置Maven打包插件使用框架自带的打包插件,对插件包进打包。将如下配置加入到插件的maven的 pom.xml 中               com.gitee.starblues       spring-brick-maven-packager       ${latest.version}                         dev                                        plugin-example                      com.gitee.starblues.example.ExamplePlugin                      1.0.0-SNAPSHOT                                                        repackage                                    详细打包插件说明见: https://www.yuque.com/starblues/iuyk4y/tfxx2b4. 新增 Controller 接口import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;  @RestController @RequestMapping("/example") public class ExampleController {     @GetMapping     public String hello(){         return "hello";     } } 5. 编译插件插件使用maven命令:mvn clean package进行编译启动测试启动主程序main, 日志中出现如下关键内容,说明集成插件成功c.g.s.i.operator.DefaultPluginOperator   : 插件加载环境: dev c.g.s.core.PluginLauncherManager         : 插件[plugin-example@1.0.0-SNAPSHOT]加载成功 c.g.s.b.p.web.PluginControllerProcessor  : 插件[plugin-example]注册接口: {GET [/plugins/module1/example]} c.g.s.core.PluginLauncherManager         : 插件[plugin-example@1.0.0-SNAPSHOT]启动成功 c.g.s.i.operator.DefaultPluginOperator   : 插件初始化完成打开浏览器,访问接口: http://127.0.0.1:8080/plugins/plugin-example/example 进行测试是否能访问成功。

净语录修行是修自己,不是修别人天天看到自己过失,天天改正自己的过失,是人生最快乐的事情。解决问题,遇到疑难问题,一定从自己身上改,不是从外来的。从自己心上改,智慧就生起来,就知道该怎么做法。不断的向上提升不断的为何古人不嫌打更吵,反倒会怕不打更?三个原因证明打更人多伟大在古代,夕阳落去,华灯灭了,疲惫的人们停下匆匆脚步。或陷入沉沉的梦境,或陷入深深的思考是夜,穿行在路上的打更人,敲着锣,喊着天干物燥小心火烛的号子。声音由远及近,打破了众人的美梦,我们都是追光者春华秋实,虽万里路遥,但我坚信追光的人总会光芒万丈。追什么样的光?如何追光?什么才是光?我认为光是人前进道路的方向,可以指引我们走向终点。可是,现在的我们却不知道光在哪?过年的时候浮生六记浮生若梦,念念不忘头条创作挑战赛还记得年少时,初读浮生六记,那是风乍起吹皱一池春水的心动和喜欢。而如今,已是中年,再次翻开浮生六记,走进沈复和芸娘的世界之时,却体会到了一种难以言说的无奈,悲痛,还有始于行动,终于成功先行动再完美,不行动一切为零我珍惜生命中的每一天。我要在困境中寻找机遇。我要控制情绪笑遍世界。我要每晚反省自己的行为。培养自身,做一个有魅力的人。处处留心,重视每一个人。听到不时我当代散文观水墨丹霞文周超出兰州向西北,一路上土黄色的荒山土岭连绵不绝,像那黄河混浊的波涛一般,一浪接着一浪,不知何处是尽头。山上草本木本植物稀少,一片片的山岭沟壑很少有绿色植被的覆盖,苍穹之下除了土倾尽全力嗅花意当前,正值万物复苏生机盎然百花盛开的美好季节,学习春海棠之坚韧虞美人之无私白玉兰之高洁,为创造无愧于党无愧于人民无愧于时代的业绩而青尽全力。细嗅海棠花之不畏严寒,做勇毅前行的奋进青人的一生就是一缕缕叠加的光阴光阴是什么?光阴是无数岁月在一个人心上身上留下的斑驳的印记和色彩光阴是无数日子的层层叠加,永不停止。在这个过程中,好多人被日子吞没掉,被岁月的风沙深深掩埋,成为往事。人的一生就是一2023滋贺自由行攻略琵琶湖白须神社美秀美术馆近江八幡滋贺县是许多到关西旅游的人也会安排进行程的地方,自古作为近江国的滋贺县,至今保留许多战国时代的遗迹,县内更坐拥日本最大湖泊琵琶湖近江最古老的大社白须神社曾被选为全球十大建筑的美秀美CBA解立彬三外援需要调整更多不能因一点伤病就有骄娇二气7日,首钢男篮在主场以85比94输给了深圳男篮。主教练解立彬在赛后发布会表达了需要球队三外援贡献更多力量的意思。解立彬说我们的三外援需要调整地更多,国内球员有不少都是带伤带病去坚持炖肉炖排骨最不该放的三种料,越放越难吃,下次可得注意了现在人们生活好了吃肉的次数多了,对于肉的做法也多了,不同的部位做法不同,比如就拿许多人最爱的排骨来说,有烤的炸的红烧的,但多数人还是喜欢炖的,炖肉时许多人都会放各种调料,同样是肉有
鹈鹕99110太阳!CP3关门收胜利,又是家有一老如有一宝不管要说几次,不管从上赛季季后赛到这季常规赛看过几次,至少我们可以确定的是,这又是一场太阳很想看到也绝对信赖可在高强度赛事中过关的求胜模式。2022季后赛首轮排在赛程表最后登场的,NBA公牛发怒,德罗赞发威,公牛顶翻雄鹿11在今天进行的东部第一轮第三场比赛中,公牛继续客场挑战雄鹿,在外界一致不被看好的情况下,公牛凭借德罗赞的超神发挥,在客场以114110险胜雄鹿,拿下一场宝贵且鼓舞士气的胜利,将总比分夺冠热门勇士和75人,谁的实力更强?双方球员首轮两场数据对比NBA20212022赛季季后赛已经进行一周了,东部的75人队和西部的勇士队都打完首轮第二场了,两队也均以20的大比分领先对手,假设双方相遇总决赛,哪支球队会问鼎总冠军呢?从双方球中国人的饮食习惯趁热吃,但其实吃太热也有很大的危害中国人的饮食习惯,趁热吃就是其中之一,特别是老一辈的人,都比较喜欢吃热的食物。趁热吃也在各种聚餐场合的客套话。但其实吃得太热对身体也存在很多的危害,甚至增加食道癌的患病风险,世界卫锐龙75800X3D正式上市,微软计划彻底弃用SMB1功能锐龙75800X3D正式上市21日晚9点,AMD锐龙75800X3D游戏处理器正式上市,京东售价3099元,可享6期免息。24日零点之前下单购买并在5月9日之前完成晒单评论可额外获陈琳39岁跳楼身亡,曾被两任丈夫当做摇钱树,母亲至今无法释怀90年代初期,陈琳一首你的柔情我永远不懂风靡全国,歌声传遍大街小巷。很多70,80后都是她的忠实歌迷,留下深刻印象。陈琳是内地歌坛最有个性和实力的歌手之一,曾与那英,田震齐名。但陈24年过去了,亲眼目睹香妃去世的萧剑过得怎么样?在娱乐圈中有很多的演员,虽然不知道他的名字,但一定熟悉他演过的角色。这里就不得不提还珠格格中的萧剑扮演者朱宏嘉。一提起这个名字,观众们自然是陌生的,但只要一提起萧剑,熟悉的面孔自然西甲1遇连败送对手近14轮首胜北京时间4月22日凌晨1点,202122赛季西甲联赛第33轮,西班牙人坐镇主场对阵巴列卡诺。中国球员武磊第87分钟替补出场,未能取得进球。最终西班牙人01不敌对手,遭遇两连败,巴列扮丑走红的杨青,嫁给老外成为富豪,英达我的秘密武器说到北京电影学院出来的明星,我们能够想到杨幂刘亦菲黄晓明陈坤都说北影盛产帅哥美女,这是真的,你看看这些北影毕业的,哪个不是帅哥美女。每年艺考的学生排队的照片,一张张美丽帅气的脸,站辽篮大格局,首战给广厦留足面子,半节打崩对手,横扫已成定局CBA总决赛首场较量已经结束,可能大家都有着类似的观赛体验意犹未尽未达预期,甚至可以说有些索然无味,辽宁男篮可以说完全压制了对手。虽然浙江广厦连续遭遇了令人沮丧的伤病,但也不至于如43岁宝妈做PST面部提升,术后7天及30天实拍,老公说像变魔术一样这位求美者是我们的粉丝,了解手术已经很长一段时间了,她说做PST面部提升手术,就是想见见我这个偶像。女士做面部提升的时候,已经43岁了,是2个孩子的妈妈,因为工作的原因(模特)对上