SpringBoot懒加载简介说明
下文笔者讲述SpringBoot懒加载简介说明,如下所示
例
SpringBoot懒加载简介
在Spring Boot中
懒加载(Lazy Loading)是一种优化技术
用于延迟Bean的初始化
直到它们第一次被请求时才进行实例化
这可以提高应用程序的启动性能
懒加载优点
1.提高启动性能:
通过延迟Bean的初始化,
可以减少启动时的内存消耗和初始化时间
2.减少资源占用:
只有在实际需要时才创建Bean,
减少了不必要的资源占用
3.更好的模块化:
懒加载有助于更好地组织和管理应用程序的不同模块,
避免不必要的依赖
启用懒加载的方式
Spring Boot提供多种方式来启用懒加载
包括全局配置和单个Bean的配置。
方式1:
全局配置
可在`application.properties`或`application.yml`文件
中启用全局懒加载
application.properties:
spring.main.lazy-initialization=true
application.yml:
spring:
main:
lazy-initialization: true
============================================================
单个Bean配置
可在单个Bean上
使用@Lazy注解来启用懒加载
例
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@Component
@Lazy
public class MyLazyBean {
public MyLazyBean() {
System.out.println("MyLazyBean initialized");
}
public void doSomething() {
System.out.println("Doing something in MyLazyBean");
}
}
懒加载的使用场景
1.大型应用程序:
在大型项目中,
许多Bean可能在启动时并不需要立即使用,懒加载可以显著提高启动性能。
2.模块化设计:
在模块化设计中,
懒加载可以帮助更好地组织和管理不同的模块,避免不必要的依赖。
3.资源密集型Bean:
对于资源密集型的Bean,懒加载可以减少启动时的资源占用。
懒加载注意事项
1.循环依赖:
懒加载可能会导致循环依赖问题
因为Bean的初始化被延迟
可能会在运行时才发现依赖问题。
2.性能影响:
虽然懒加载可以提高启动性能
在某些情况下
频繁的延迟初始化可能会对运行时性能产生影响。
例
application.properties:
spring.main.lazy-initialization=true
MyLazyBean.java:
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
@Component
@Lazy
public class MyLazyBean {
public MyLazyBean() {
System.out.println("MyLazyBean initialized");
}
public void doSomething() {
System.out.println("Doing something in MyLazyBean");
}
}
MyController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@Autowired
private MyLazyBean myLazyBean;
@GetMapping("/lazy")
public String lazyLoad() {
myLazyBean.doSomething();
return "Lazy loading example";
}
}
启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class LazyLoadingApplication {
public static void main(String[] args) {
SpringApplication.run(LazyLoadingApplication.class, args);
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


