SpringApplication
允许应用程序进行延迟初始化。当启用延迟初始化时,bean 会在需要时创建,而不是在应用程序启动时创建。因此,启用延迟初始化可以减少应用程序的启动时间。在 web 应用程序中,启用延迟初始化将导致许多与 web 相关的 bean 在收到 HTTP 请求之前不会被初始化。
延迟初始化的一个缺点是它可能会延迟发现应用程序中的问题。如果一个配置错误的 bean 被延迟初始化,那么失败将不在启动时发生,问题只会在 bean 初始化时被发现。还必须注意确保 JVM 拥有足够的内存来容纳应用程序的所有 bean,而不仅仅是那些在启动时初始化的 bean。由于这些原因,延迟初始化默认不是启用的,建议在启用延迟初始化之前对 JVM 的堆大小进行微调。
延迟初始化可以通过编程方式在SpringApplicationBuilder
使用lazyInitialization
方法或在SpringApplication
上使用 setLazyInitialization
方法来启用。另外,它也可以使用 spring.main.lazy-initialization
属性来启用,如下例所示:
spring.main.lazy-initialization=true
提示:如果想在应用程序的其余部分使用延迟初始化的同时,禁用某些bean的延迟初始化,可以使用@Lazy(false)
注解明确地将它们的lazy
属性设置为false
。