一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - SpringBoot新特性之全局懶加載機制

SpringBoot新特性之全局懶加載機制

2020-07-16 12:05冷冷zz JAVA教程

這篇文章主要介紹了SpringBoot新特性之全局懶加載機制,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

關于延遲加載

在 Spring 中,默認情況下所有定的 bean 及其依賴項目都是在應用啟動時創建容器上下文是被初始化的。測試代碼如下:

?
1
2
3
4
5
6
7
@Slf4j
@Configuration
public class DemoConfig {
 public DemoConfig() {
  log.warn(" > > > demoConfig 被初始化 > > >");
 }
}

啟動應用日志:

?
1
2
3
4
5
[   main] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring embedded WebApplicationContext
[   main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1193 ms
[   main] c.p.c.global.lazy.config.DemoConfig  : > > > demoConfig 被初始化 > > >
[   main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
[   main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''

如上日志: 在 Tomcat started 之前 DemoConfig bean 已經被初始化創建。

一般情況程序在啟動時時有大量的 Bean 需要初始化,例如 數據源初始化、緩存初始化等導致應用程序啟動非常的慢。在 spring boot 2.2 之前的版本,我們對這些 bean 使用手動增加 「@Lazy」 注解,來實現啟動時不初始化,業務程序在調用需要時再去初始化,如上代碼修改為即可:

?
1
2
3
@Lazy
@Configuration
public class DemoConfig {}

為什么需要全局懶加載

同上文中提到我們需要手動在 bean 增加 「@Lazy」 注解,這就意味著我們僅能對程序中自行實現的 bean 進行添加。但是現在 spring boot 應用中引入了很多第三方 starter ,比如 druid-spring-boot-starter 數據源注入、spring-boot-starter-data-redis 緩存等默認情況下, 引入即注入了相關 bean 我們無法去修改添加 「@Lazy」。

spring boot 2.2 新增全局懶加載屬性,開啟后全局 bean 被設置為懶加載,需要時再去創建

?
1
2
3
spring:
 main:
 lazy-initialization: true #默認false 關閉

個別 bean 可以通過設置 「@Lazy(false)」 排除,設置為啟動時加載

?
1
2
3
@Lazy(false)
@Configuration
public class DemoConfig {}

當然也可以指定規則實現 LazyInitializationExcludeFilter 規則實現排除

?
1
2
3
4
@Bean
 LazyInitializationExcludeFilter integrationLazyInitExcludeFilter() {
 return LazyInitializationExcludeFilter.forBeanTypes(DemoConfig.class);
}

全局懶加載的問題

通過設置全局懶加載,我們可以減少啟動時的創建任務從而大幅度的縮減應用的啟動時間。但全局懶加載的缺點可以歸納為以下兩點:

  • Http 請求處理時間變長。 這里準確的來說是第一次 http 請求處理的時間變長,之后的請求不受影響(說到這里自然而然的會聯系到 spring cloud 啟動后的第一次調用超時的問題)。
  • 錯誤不會在應用啟動時拋出,不利于早發現、早解決、早下班。

總結

SpringBoot新特性之全局懶加載機制

SpringBoot新特性之全局懶加載機制

以上源碼: spring-boot-course

到此這篇關于SpringBoot新特性之全局懶加載機制的文章就介紹到這了,更多相關SpringBoot 全局懶加載機制內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.im/post/5f0f8341e51d453495701d22

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 香蕉国产成版人视频在线观看 | 韩国久播影院理论片不卡影院 | 免费永久视频 | 国产成人综合一区人人 | 久久精品亚洲热综合一本 | 成人软件18免费 | 亚洲人成绝费网站色ww | 国产精品国语自产拍在线观看 | 操尼姑 | 青春学堂在线观看 | www.男人天堂| 99久久精品免费看国产四区 | 四虎精品成人a在线观看 | 香蕉久久夜色精品国产尤物 | 关晓彤被调教出奶水 | 欧美猛男同志同性video | 男人的天堂久久精品激情a 男人的天堂va | 四虎最新免费观看网址 | 色偷偷亚洲综合网亚洲 | 亲爱的客栈第二季免费观看完整版 | 91香蕉视频在线播放 | 青草久久精品亚洲综合专区 | 五月最新女厕所高跟嘘嘘 | 国产亚洲欧美成人久久片 | 四神集团1涨奶是第几章 | 草啪啪 | 日韩在线视频一区二区三区 | 秋霞啪啪网| 久久机热视频 这里只有精品首页 | 日韩欧美在线看 | 国产免费视频 | 午夜一级免费视频 | 青春学堂在线观看 | 91次元成年破解版 | 四虎影院精品在线观看 | 欧美大片一区二区三区 | 天堂网在线.www天堂在线资源 | 香蕉91xj.cc| 午夜宅男影院 | 东方影视欧美天天影院 | 国语自产拍在线观看7m |