SpringBoot项目速度提升之延迟初始化(Lazy Initialization)详解
什么是延迟初始化?
在 SpringBoot 项目中,如果需要频繁地实例化大量的 Bean,就会导致系统启动速度变慢,影响用户体验。此时,可以使用延迟初始化的方式,在需要使用 Bean 时再去实例化,从而提高系统的启动速度。
如何使用延迟初始化?
延迟初始化可以通过在配置类或者 Bean 上添加 @Lazy
注解来实现。
1. 在配置类上添加 @Lazy
注解
可以在配置类上添加 @Lazy
注解,来将该配置类中的所有 Bean 都延迟初始化。
@Configuration
@Lazy
public class AppConfig {
@Bean
public SomeBean someBean() {
return new SomeBean();
}
// 多个 Bean 省略...
}
2. 在 Bean 上添加 @Lazy
注解
也可以在某个特定的 Bean 上添加 @Lazy
注解,只将该 Bean 延迟初始化。
@Component
@Lazy
public class SomeBean {
// Bean 的内容
}
延迟初始化的效果
下面通过两个示例来展示延迟初始化的效果。
示例一:不使用延迟初始化
创建一个简单的类 SomeBean
,并在配置类中引用该类。
public class SomeBean {
public SomeBean() {
try {
Thread.sleep(5000); // 模拟初始化耗时 5 秒钟
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Configuration
public class AppConfig {
@Bean
public SomeBean someBean() {
return new SomeBean();
}
}
启动 SpringBoot 应用,可以看到控制台输出如下:
Started DemoApplication in 7.901 seconds (JVM running for 9.424)
可以看到,应用启动完成需要 7.901 秒钟,其中 5 秒钟用于初始化 SomeBean。
示例二:使用延迟初始化
在上一个示例的基础上,修改 SomeBean
类和配置类,分别添加 @Lazy
注解。
@Component
@Lazy
public class SomeBean {
public SomeBean() {
try {
Thread.sleep(5000); // 模拟初始化耗时 5 秒钟
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Configuration
public class AppConfig {
@Bean
@Lazy
public SomeBean someBean() {
return new SomeBean();
}
}
重新启动 SpringBoot 应用,可以看到控制台输出如下:
Started DemoApplication in 2.420 seconds (JVM running for 3.223)
可以看到,应用启动完成只需要 2.420 秒钟,其中 SomeBean 是在需要时再进行初始化的。
总结
通过本文的介绍,我们了解了 SpringBoot 中的延迟初始化方式,并通过示例展示了它的效果。在需要频繁地实例化大量的 Bean 时,使用延迟初始化可以有效地提高系统的启动速度,提升用户体验。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot项目速度提升之延迟初始化(Lazy Initialization)详解 - Python技术站