Spring可以缓存组件扫描信息/自动装配以改善启动时间吗?

时间:2014-04-06 01:12:43

标签: java spring google-app-engine caching ioc-container

是否有配置Spring来缓存组件扫描/自动装配信息以改善从一个开始到另一个开始的启动时间?我是第一次使用GAE进行Spring应用程序的调查,根据GAE docs,他们建议几乎禁用Spring提供的所有实用功能,以加快开发速度。例如:组件扫描,自动装配,使用lazy-init bean等。基本上所有需要更长时间才能设置容器的东西。

虽然我理解所有这些建议背后的原理,但我发现它在开发过程中几乎倒退了一步。什么会让它变得非常有趣/有用的是,如果有一种方法可以让Spring生成一个类别的缓存文件,它可以为将来的初创公司提供参考,以避免每次都进行完整的组件扫描等。

这样的事情是否存在?

3 个答案:

答案 0 :(得分:2)

该功能目前不存在,其主要问题是在启动之间存储该信息的位置,必须授予文件系统中的目录访问权限等。

加速启动的常用方法是对仅包含可扫描的类集的子包执行组件扫描,或者完全避免扫描并使用XML。

此外,如果有一个像Hibernate这样的ORM框架,我有助于关闭模式验证。使用延迟初始化bean还可以缩短启动时间,目前无法替代这些措施来缩短启动时间。

答案 1 :(得分:1)

HK2在启动时的表现方面做了很多工作。例如,如果你在构建时使用hk2-inhabitant-generator,它可以在你的jar中添加一个文件(在META-INF / hk2-locator / default下),它提供了一个可以注入和/或加载的服务列表。 HK2。这样做的好处是,在启动时,服务可以在HK2中“可用”,而无需对任何服务进行分类加载。这反过来可以大大提高启动时间(这是我们在GlassFish等产品中获得极快启动时间的方式)。您可以将其与hk2运行级别服务结合使用,以便以结构化方式启动系统。此外,如果您使用的是Spring,那么Spring-HK2桥接器将允许您在Spring中保留大部分服务,如果您愿意的话。但很明显,Spring中保留的服务不会受益于HK2中提供的惰性类加载。

答案 2 :(得分:1)

您还可以通过使用JRebel等工具替换服务器运行时所需的内容,从而避免最小化启动/接线时间。