写了一个 Java 插件框架,大家看看能不能用上

2023-08-15 20:44:28 +08:00
 v2e0xAdmin2

git 地址: https://github.com/stateIs0/exp

为了解决公司的业务痛点, 这段时间一直在搞这个东西。看看开源出来能不能帮到其他人,有用的就点个 star ⭐️⭐️⭐️⭐️⭐️,哈哈

1592 次点击
所在节点    程序员
22 条回复
zhady009
2023-08-15 22:42:12 +08:00
可以看看 PF4J ?
v2e0xAdmin2
2023-08-15 22:53:02 +08:00
@zhady009 #1 嗯嗯,写完之后才看到这个,看起来类似,但是又有点区别
v2e0xAdmin2
2023-08-16 09:02:25 +08:00
大概的场景:
B 端大客户对业务进行定制, 需要对主代码扩展,传统做法是 git 拉取分支,现在基于扩展点的方式进行定制, 可热插拔,需要多个程序可分可合, 支持将多个 springboot 应用合并部署, 或拆开部署,扩展点类似 swagger 文档 doc, 用于类插件系统管理平台进行展示,

详细的博客地址: http://thinkinjava.cn/2023/08/15/2023/exp/
muyiluop
2023-08-16 09:06:44 +08:00
这个我还真能用上,之前搞物联网设备接入,设备种类太多,协议各种各样,也是搞了一个简单的热插拔的插件,但是解决不了一个问题,就是怎么防恶意代码,我们这支持三方开发,如果写个 System.exit() 或者其他会出现导致程序崩溃的代码,比如 jni 调用第三方库出现个什么内存异常啥的,程序就容易出问题,只能每个三方的不信任插件单独运行。请教下你是怎么处理这种情况的呢
v2e0xAdmin2
2023-08-16 09:24:25 +08:00
@muyiluop 用 groovy
v2e0xAdmin2
2023-08-16 09:47:14 +08:00
@muyiluop 详细的说,就是把底层的 classloader 换成 groovy 引擎,这个可以支持代码检查,比如 system-exit
iosyyy
2023-08-16 09:58:01 +08:00
看着侵入性好像有点强? 赶紧不算实用
v2e0xAdmin2
2023-08-16 10:06:13 +08:00
@iosyyy #7 嗯,如果考虑少点侵入性的话,就需要非常多的配置来描述,比如 n 年前的 spring xml ,是个取舍问题;另外侵入性,这个框架都是基于 spi 和 Interface 来编程的,随时可替换成自己的的 spi 实现(如果认可这个 api 的话)
zxCoder
2023-09-24 11:35:36 +08:00
这个能结合 spring 吗?
v2e0xAdmin2
2023-09-24 12:32:40 +08:00
@zxCoder #9 必须可以
zxCoder
2023-09-24 13:23:53 +08:00
@v2e0xAdmin2

https://www.v2ex.com/t/976638#reply1

能实现这样的功能吗?我看了你代码仓库的 example ,没咋看懂
v2e0xAdmin2
2023-09-24 13:52:12 +08:00
@zxCoder #11 完全可以,你的场景就是我们的场景
v2e0xAdmin2
2023-09-24 13:54:52 +08:00
@zxCoder #11 可以提 issue 或者 钉钉群
zxCoder
2023-09-24 14:24:18 +08:00
支持 springboot3 吗
zxCoder
2023-09-24 14:33:06 +08:00
没找到相关的依赖包
v2e0xAdmin2
2023-09-24 14:36:59 +08:00
@zxCoder #14 支持 springboot 3 ,在另外一个 project 里; https://github.com/stateIs0/open-exp-springboot3
zxCoder
2023-09-24 14:55:28 +08:00
为啥没放 maven 上,方便点
v2e0xAdmin2
2023-09-24 15:24:50 +08:00
@zxCoder #17 用的人还不多,就没放 maven 了,可以考虑放 maven 仓库
zxCoder
2023-09-24 15:46:13 +08:00
@v2e0xAdmin2 可以搞一个,刚刚想在我的项目中测试,但是用不了,还得自己编译到本地仓库
zerofancy
2023-12-16 03:20:06 +08:00
@muyiluop 我有个想法,插件用自定义 classloader 加载,是否可以破坏双亲委派,给 System 类搞个 proxy

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/965589

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX