alibaba / jetcache

JetCache is a Java cache framework.
Apache License 2.0
5.03k stars 1.05k forks source link

compatible springboot3 #812

Closed zt9788 closed 1 year ago

zt9788 commented 1 year ago

兼容Springboot3 主要兼容javax包部分,另外对几个同步做了修改(javax迁移后,导致@resource等注解不能被加载的问题)

areyouok commented 1 year ago

感谢你的工作。

不过这和我对jetcache的定位有些不符合,我的设计是jetcache-core不允许依赖spring。 虽然大部分情况下,jetcache都是和spring一起用的,但其实jetcache-core可以单独用。整个spring体系现在依赖树很多,我还是想保持将jetcache从spring中摘取出来的能力。

jetcache是我从10年前开始开发的,它的注解体系和spring高度耦合,也就算了。近两年我对减少依赖有了更大的兴趣,我认为越是基础组件,越是要减少依赖,所以我新开发的另一个项目目标是0依赖。

zt9788 commented 1 year ago

感谢你的工作。

不过这和我对jetcache的定位有些不符合,我的设计是jetcache-core不允许依赖spring。 虽然大部分情况下,jetcache都是和spring一起用的,但其实jetcache-core可以单独用。整个spring体系现在依赖树很多,我还是想保持将jetcache从spring中摘取出来的能力。

jetcache是我从10年前开始开发的,它的注解体系和spring高度耦合,也就算了。近两年我对减少依赖有了更大的兴趣,我认为越是基础组件,越是要减少依赖,所以我新开发的另一个项目目标是0依赖。

hi, 多谢回复

如果不用这种方式实现的话,

亦或者在starter的@Bean中用initMethoddestroyMethod来重新实现一下?

如果可行,我可以重新提一个pr上来

areyouok commented 1 year ago

其实我以前做过一次boot3的支持了,可能没做全面。要支持boot3,有两种处理方式:

1、开发一个2.8版本,抛弃对老版本spring/spring boot的支持。顺便可以把jetdis/lettuce什么的升级一下。 2、同一个jetcache版本既支持boot2又支持boot3,这种方式工作量比较大,各个版本都要测试。可以参考https://github.com/alibaba/jetcache/blob/master/docs/CN/Compatibility.md

如果方式2的话,用你说的办法应该可行,现在搜索javax一共有7处使用: image

ConifgProvider里面那个Resource应该可以删掉(有setter方法)。 DefaultMetricsManager看起来也可以删掉,因为它的start()/stop()是显式调用的。 同样,MetricsMonitorInstalle的init方法也是显式调用的。

zt9788 commented 1 year ago

第一个方案工作量确实比较大 😂 我稍晚一点先改用方案2提一下删除掉javax相关(这个pr我先关掉)