98 Star 569 Fork 123

闲.大赋(李家智) / Beetl

 / 详情

有没有考虑用jarjar将asm变换包名打包?

待办的
创建于  
2019-06-12 22:40

不好意思又来提issue了:
不清楚为什么Beetl要依赖ASM,如果是不重要功能,可以改成optional方式,由用户自已来决定开启这个功能并自行添加包。 如果是关键核心功能,有没有考虑用jarjar将asm变换包名打包,以减少jar包版本冲突的可能?我跟的两个比较常见的工具Spring-core和Guice都是这么做的,虽然我也不会用jarjar,(为了防止版本冲突问题,直接将CGLIB和ASM的源码放到jBeanBox里面去了)。但你们人多,可以研究一下Guice怎么做的。

评论 (5)

drinkjava2 创建了任务

Beetl可以不依赖ASM,不过需要改成defaultTemplateEngine,还有pom需要exlcude以下
ASM加速了反射调用性能,我建议还是用上吧

@闲.大赋(李家智) 那既然这样的话,可否 先判断用户是否指定引擎,若没指定引擎则 初始化的时候自动判断是否存在所需的ASM的类,存在则自动采用FastRuntimeEngine ,不存在则使用DefaultTemplateEngine

因为存在一种使用场景是例如SpringBoot这类的默认情况下无法直接使用jsp,必须得配套一个模板引擎,但其实我们只是希望url看起来好看一点(不想都放在static目录下,也不想都带上.html结尾这类的,有些参数也可能想用PathVariable让URL更好看一点),只是想做一个单纯的视图转发,采用动静分离来做项目,并不需要模板引擎去动态渲染什么,最多只是用一下include 或者 layout这种抽取模板中的公共头尾或布局,此种情况下Beetl依赖的 asm 可能略显多余了(当然可能其他框架依赖了,此时又会可能导致和beetl引入的版本冲突的问题)

嘿,今天翻spring-core的github上源码,发现它把cglib和asm源码内嵌到spring项目里去了,我还打算学它用jarjar呢,没想到他也倒过来象我一样源码内嵌了,可以借签:
https://github.com/spring-projects/spring-framework/tree/master/spring-core/src/main/java/org/springframework
spring把包重新整理了一下,不知道有没有精减尺寸,回头我要试一下用在jBeanBox中。

现在有maven,beetl还是拆下好些。尺寸不会变化反而会略多(代码量基本不变),主要好处代码维护更加简单。

我补充更正一下,后来发现Spring对待CGLIB和ASM实际上是不同的,虽然都是内嵌,但它是把ASM所有源码直接变换包名放到spring-core里,而用jarjar把CGLIB库(不是源码)嵌到包里,这可能是因为ASM源码少,只有十几个类的原因。

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(4)
29 xiandafu 1678706040 132384 ydq 1671165271 920504 drinkjava2 1578935955
Java
1
https://gitee.com/xiandafu/beetl.git
git@gitee.com:xiandafu/beetl.git
xiandafu
beetl
Beetl

搜索帮助