项目采用struts2+spring+hibernate实现,项目的规模不算很大,但系统启动起来很慢

原因在于:

spring容器启动并解释所有的bean配置文件,这个很耗时间。

发现spring的容器是提供了lazy-load的,即默认的缺省设置是bean没有lazy- load,该属性处于false状态,这样导致spring在启动过程导致在启动时候,会默认加载整个对象实例图,从初始化ACTION配置、到 service配置到dao配置、乃至到数据库连接、事务等等。这么庞大的规模,难怪spring的启动时间要这么久。

 

尝试了一下,把beans的 default-lazy-init改为true就,再次启动,发现节省了不少时间。

 

以上是针对开发阶段的spring容器启动优化,在部署到实际环境中,倒是没必要设置为lazy-load。毕竟部署到实际环境中不是经常的事,每次启动1分钟倒不是大问题。

并不是说有的beans都能设置default-lazy-init成为true.对于scheduler的bean不能用lazy-init

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐