在我的项目中,我正在使用EL的独立jasper实现。我将libs添加到我的maven pom文件中:
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>el-api</artifactId>
<version>6.0.32</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>jasper-el</artifactId>
<version>6.0.32</version>
</dependency>
目前我的应用程序非常慢,因为大量使用el表达式 - 它正在及时编译它应该被调用。 现在我想在初始化时移动表达式编译,但我想知道在多个线程中使用相同的ValueExpression是否是线程安全的。有什么想法吗?
答案 0 :(得分:1)
值表达式不是线程安全的。但是,EL实现应该在内部缓存已解析的表达式,并且调用ExpressionFactory.createExpression(...)
应该只需要在第一次解析表达式字符串。
根据您的环境,您可能希望尝试一种性能优于Tomcat的EL实现,例如: JUEL可以显着提升效果。
答案 1 :(得分:0)
不要这样认为,除非你在常见的初始化代码中处理线程安全问题。