java - 签名 Jar 文件中的 Spring 组件扫描 (@Autowire) 速度很慢

标签 java spring performance jar signed

几年前,我们在独立的 java 应用程序中遇到了 Spring 组件扫描缓慢的问题,所以我在 stackoverflow 中询问: Slow spring component scan 。几年后,我再次偶然发现这个问题,我想我找到了它慢的原因:这是因为 jar 文件已签名。 目前我们的应用程序中有大约 170 个 jar 文件。我们自己的和第三者。我们签署了所有这些。 通常我们使用webstart,组件扫描的性能还可以。 只需执行“java -cp mainclass”即可使用巨大的类路径启动我们的应用程序,组件扫描需要几分钟的时间。 如果我只是从所有 jar 文件(仅包含签名信息)中删除 MANIFEST.MF 文件,然后再次运行该应用程序,速度将与 Webstart 一样快。 看来签名检查花费了很多时间。 我尝试在 Java 控制台中停用签名扫描。没有效果。还是很慢。有java运行时参数吗?

最佳答案

我目前在使用签名的 uber-jar 时遇到了同样的问题。它可能与 Autowiring 无关,但与上下文组件扫描有关,以防您也在 XML 配置中使用它。我找到了一个旧的 Spring 核心 ticket提到这一点。该票证已关闭,但解决方案:无法修复...

我已经删除了组件扫描并将其替换为 XML beans,并且它似乎可以正常工作。我仍然对使用内省(introspection)(org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean)在运行时生成的 CXF Web 服务有问题。创建每个服务大约需要 2 分钟。但至少取得了一些进展。

还有一点值得注意:在 Java 9 上使用 Java Web Start 时,应用程序速度很慢,尽管在 1.8 上运行速度非常快

关于java - 签名 Jar 文件中的 Spring 组件扫描 (@Autowire) 速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47095448/

相关文章:

php - 在 SQLite 中选择和项目的当前、上一个和下一个值的最有效方法

java - Eclipse 在尝试显示 rt.jar 中的类的 Javadoc 时超时

java - 编译文件时内存不足异常

java - 找不到 getColor() 方法?国际象棋游戏帮助 Java

java - Freemarker 多个配置实例

java - 如何将 BindingResult 作为请求参数传递?

javascript - Node.js 移动繁重的 CPU 密集型任务

java - 从 Java 类访问 Config.groovy

regex - Spring Mongo 不区分大小写的搜索正则表达式

scala - 对 multipart/form-data 进行 POST 调用时,加特林测试返回 504