我在一个应用程序中工作,我们混合使用 XML 和组件扫描来定义依赖项应该如何连接在一起。
启动应用程序大约需要一到三秒钟,这或多或少是可以的。但是,对于功能测试,我们会启动它几百次。你可以猜到其余的...
我想知道是否有任何可用的性能比较来比较基于 XML、组件扫描和基于 @configuration bean 的 spring 应用程序上下文在启动性能方面。
我打算制作一个小型沙盒项目,以找出如果我在这里几天没有得到答复,哪个性能更好。
提前谢谢各位。塔马斯
我在一个应用程序中工作,我们混合使用 XML 和组件扫描来定义依赖项应该如何连接在一起。
启动应用程序大约需要一到三秒钟,这或多或少是可以的。但是,对于功能测试,我们会启动它几百次。你可以猜到其余的...
我想知道是否有任何可用的性能比较来比较基于 XML、组件扫描和基于 @configuration bean 的 spring 应用程序上下文在启动性能方面。
我打算制作一个小型沙盒项目,以找出如果我在这里几天没有得到答复,哪个性能更好。
提前谢谢各位。塔马斯
与其担心哪个启动配置更快,不如看看你的测试工具更有效。
如果功能测试都可以在同一个 Spring 配置中运行,那么为什么不只加载一次呢?该文档讨论了这个特定问题:http ://static.springsource.org/spring/docs/current/spring-framework-reference/html/testing.html#testing-ctx-management
减少加载文本上下文的次数,您将拥有更快的整体测试时间。如果某些测试需要有个性化的启动有某种原因,那么很好,将它们加载到自己的上下文中。
最后,我花了 10 分钟的时间在这个话题上做了一个小高潮。
我创建了一个新项目(spring 模板 -> Simple Spring Utility Project)并对其进行了一些修改。
在测试包中,我添加了三个测试用例。
每个测试用例创建应用程序上下文 1000 次。
结果:
这意味着带有 AnnotationConfigApplicationContext 的 @Configuration 比其他两个快 40% 左右。
我需要注意的是,我认为这种测量在任何方面都不准确或精确。依赖层次太简单了(只有一个 bean),但我仍然希望 AnnotationConfigApplicationContext 是这三个中最快的解决方案。