成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

優(yōu)化技巧:如何加快Spring項(xiàng)目啟動(dòng)速度

開發(fā) 項(xiàng)目管理
在大型Spring項(xiàng)目中,由于Bean數(shù)量眾多,導(dǎo)致啟動(dòng)速度變慢。使用spring-context-indexer可以優(yōu)化啟動(dòng)速度,提高開發(fā)效率、減少資源占用和減少故障、錯(cuò)誤率。spring-context-indexer是一個(gè)工具,它可以在編譯時(shí)為類路徑下的組件創(chuàng)建索引,這樣在啟動(dòng)時(shí)就可以通過索引快速地加載和初始化組件。?

環(huán)境:Spring5.3.23

1. 介紹

在大型的Spring項(xiàng)目中,由于有成百上千的Bean需要通過掃描注冊到Spring容器中,這會(huì)導(dǎo)致啟動(dòng)速度變慢。為了解決這個(gè)問題,我們可以使用spring-context-indexer來優(yōu)化啟動(dòng)速度。

spring-context-indexer是一個(gè)工具,它可以在編譯時(shí)為類路徑下的組件創(chuàng)建索引,這樣在啟動(dòng)時(shí)就可以通過索引快速地加載和初始化組件。使用spring-context-indexer可以大大提升Spring應(yīng)用程序的啟動(dòng)速度,從而使得開發(fā)人員可以更快地開發(fā)和測試應(yīng)用程序,提高開發(fā)效率。

在大型項(xiàng)目中,由于Bean數(shù)量眾多,Spring應(yīng)用程序的啟動(dòng)時(shí)間可能會(huì)變得非常長。通過使用spring-context-indexer,我們可以減少啟動(dòng)時(shí)間,從而減少對系統(tǒng)資源的占用,使得更多的資源可以被用來處理其他任務(wù)。此外,快速啟動(dòng)應(yīng)用程序還可以減少因?yàn)槌绦蜷L時(shí)間未響應(yīng)而導(dǎo)致的故障和錯(cuò)誤率。

2. 配置使用

引入依賴包

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context-indexer</artifactId>
  <version>5.3.23</version>
  <optional>true</optional>
</dependency>

如果使用的是gradle

# gradle 4.5以下版本包括4.5
dependencies {
  compileOnly "org.springframework:spring-context-indexer:5.3.23"
}
# gradle 4.6以上版本
dependencies {
  annotationProcessor "org.springframework:spring-context-indexer:5.3.23"
}

準(zhǔn)備Bean對象

@Component
public class Person {
}
@Component
public class Student {
}
@Component
public class User {
}

測試上面的的類都能被容器掃描到

try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.pack.context_indexed")) {
    for (String name : context.getBeanDefinitionNames()) {
      System.out.println(name) ;
    }
  }
}

控制臺(tái)輸出

org.springframework.context.annotation.internalConfigurationAnnotationProcessor
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
org.springframework.context.annotation.internalCommonAnnotationProcessor
org.springframework.context.annotation.internalPersistenceAnnotationProcessor
org.springframework.context.event.internalEventListenerProcessor
org.springframework.context.event.internalEventListenerFactory
person
student
user

所有的bean都能被容器掃描到

手動(dòng)創(chuàng)建META-INF/spring.components 文件

內(nèi)容如下

com.pack.context_indexed.Person=org.springframework.stereotype.Component

格式:完整的包名=完整注解名

有了上面的索引文件后,再次運(yùn)行上面的測試文件

# ...
person

自定義的bean就只剩下person了,這就是因?yàn)樵谏厦娴乃饕募兄欢x了    person的原因,這樣就不會(huì)在掃描你當(dāng)前包下的所有class文件了,只會(huì)讀取索引文件中的內(nèi)容。

此時(shí)如果你訪問不在此列表中的類,程序?qū)?bào)錯(cuò),找不到對應(yīng)的Bean對象。

自定義注解支持

我們可以在索引文件中使用自己定義的注解,示例如下

// 自定義注解
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Component
public @interface PackComponent {
}
// 修改User類注解
@PackComponent
public class User {
}

在索引文件中添加配置

com.pack.context_indexed.Person=org.springframework.stereotype.Component
com.pack.context_indexed.User=com.pack.context_indexed.PackComponent

控制臺(tái)輸出

# ...
person
user

以上都是通過手動(dòng)創(chuàng)建的方式,在實(shí)際大型項(xiàng)目中如果你手動(dòng)創(chuàng)建維護(hù)索引文件那還不如不使用索引,并且還及其容易出現(xiàn)錯(cuò)誤。我們可以借助IDE工具配置注解處理器來幫我們自動(dòng)的完成索引文件的創(chuàng)建。

這里以Eclipse為例來配置

首先,將spring-context-indexer添加eclipse注解處理中

圖片圖片

通過上面的1,2,3步后,索引文件將會(huì)被自動(dòng)的生成。

自動(dòng)生成的spring.components文件,默認(rèn)將在target\classes\META-INF目錄下,部分內(nèi)容:

com.pack.context_indexed.Persnotallow=org.springframework.stereotype.Component
com.pack.context_indexed.Student=org.springframework.stereotype.Component
com.pack.context_indexed.User=org.springframework.stereotype.Component

關(guān)閉索引功能

我們可以通過設(shè)置JVM參數(shù)進(jìn)行關(guān)閉索引功能,在啟動(dòng)程序添加如下參數(shù)即可關(guān)閉

-Dspring.index.ignore=true

在大型Spring項(xiàng)目中,由于Bean數(shù)量眾多,導(dǎo)致啟動(dòng)速度變慢。使用spring-context-indexer可以優(yōu)化啟動(dòng)速度,提高開發(fā)效率、減少資源占用和減少故障、錯(cuò)誤率。spring-context-indexer是一個(gè)工具,它可以在編譯時(shí)為類路徑下的組件創(chuàng)建索引,這樣在啟動(dòng)時(shí)就可以通過索引快速地加載和初始化組件。

責(zé)任編輯:武曉燕 來源: Spring全家桶實(shí)戰(zhàn)案例源碼
相關(guān)推薦

2009-09-04 11:34:31

NetBeans優(yōu)化

2024-07-25 08:25:35

2011-08-29 17:16:29

Ubuntu

2009-07-01 15:02:56

JSP程序JSP操作

2020-04-24 18:51:50

Windows 10Windows電腦速度

2011-09-11 02:58:12

Windows 8build微軟

2016-02-22 09:27:18

2024-09-09 05:30:00

數(shù)據(jù)庫Spring

2024-11-28 10:04:14

2020-09-28 15:54:18

Python語言技術(shù)

2013-07-08 11:16:05

Windows 7

2009-08-11 09:10:26

Windows 7系統(tǒng)提速

2019-03-18 15:35:45

WebCSS前端

2009-07-10 09:03:27

Myeclise 7.優(yōu)化

2011-01-06 10:46:10

微軟認(rèn)證

2021-12-10 12:13:42

谷歌Chrome 瀏覽器

2022-04-02 14:16:43

AI人工智能首席信息官

2017-09-18 16:33:18

Windows 10Windows菜單

2024-11-01 07:30:00

2021-09-03 09:44:13

移動(dòng)端性能優(yōu)化U-APM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲欧美精品在线观看 | 国产精品一二区 | 国产亚洲精品精品国产亚洲综合 | av毛片 | 在线色网| 三级视频久久 | 国产亚洲精品精品国产亚洲综合 | 亚洲精品一区二区三区丝袜 | 欧美日韩一区二区三区四区 | 91av导航 | 理论片87福利理论电影 | 婷婷免费在线 | 久久大陆 | 综合久久av | 殴美成人在线视频 | 亚洲一区二区中文字幕 | 日本亚洲精品成人欧美一区 | 国产精品色 | 日韩精品一区二区三区中文在线 | 精精国产xxxx视频在线播放 | 91精品国产综合久久久久久漫画 | www.日韩| 国产精品久久久久久久久久久久久 | 日韩欧美国产精品一区二区三区 | 男女视频在线观看免费 | 亚洲激精日韩激精欧美精品 | 亚洲国产成人在线观看 | 亚洲综合色视频在线观看 | 羞羞在线观看视频 | 亚洲五码在线 | 日本超碰在线 | 97在线观看| 欧美一级欧美三级在线观看 | 欧美一区精品 | 国产精品高清一区二区三区 | 精品国产乱码一区二区三 | 欧美久久一区 | 99在线视频观看 | 日韩高清成人 | 日本精品视频 | 成人激情视频网 |