項目集成了很多內容,有 700 多個類,IDEA 中啟動一次需要 70 秒,非常影響開發效率。
研究問題原因發現有以下幾種情況會導致啟動速度慢,優化后啟動只需 26 秒左右了:
1. 和網卡有關,禁用一些不用的網卡可以提高 2~3 秒,因為啟動時會根據 ip 地址獲取機器名,有的網卡獲取不到會等 1 秒超時才返回。
2. gradle 中如果依賴了 sleuth 會導致項目啟動非常慢,可以在開發環境禁用掉,通過系統變量控制,操作步驟:
- 在系統環境變量中設置 IDEA_PROFILE=dev
- 修改 build.gradle
//有些包在開發環境可以不用加載,可縮短啟動時間
if (System.getenv("IDEA_PROFILE") == 'dev') {
println 'dev'
} else {
println('not dev')
compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-sleuth', version: '1.3.3.RELEASE'
}
- 填加環境變量后,需要做一次 gradle clean
- 然后重啟 IDEA,在 build 時看到下面紅框中的 dev 就對了
3. 如果用了 AOP 並且切入點使用了 @annotation 注解的切入方式,會導致系統啟動時對每個方法都判斷是否有對應注解,非常耗時
如果這些注解在開發環境作用不大,可通過 Profile 注解設置為只在生產和測試環境生效,或改用其他方式切入,不要用 @annotation 注解切入
4. 另外配置文件增加以下配置,關閉一些監控功能,可以快2秒
endpoints:
enabled: false //關閉一些監控功能,可以快2秒