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