Spring全局懶加載的優(yōu)劣及使用方法詳解
開(kāi)啟 Spring 全局 bean 懶加載的好處
- 可以加快啟動(dòng)速度,當(dāng)服務(wù)依賴很多的時(shí)候,增速非常明顯。
- 服務(wù)啟動(dòng)時(shí)不用考慮依賴,不需要滿足所有的依賴就可以啟動(dòng)服務(wù)
- 建議 在 test, qa, dev 等環(huán)境酌情開(kāi)啟,在自己本機(jī)調(diào)試測(cè)試時(shí)可以只測(cè)試部分功能,只需要保證需要測(cè)試的功能依賴滿足即可
- 生產(chǎn)環(huán)境一般不建議開(kāi)啟
- 本機(jī)單元測(cè)試的時(shí)候使用全局懶加載和 @mock 結(jié)合
開(kāi)啟 Spring 全局 bean 懶加載的壞處
- 屏蔽了啟動(dòng)時(shí)對(duì) bean 的依賴檢查,當(dāng) bean 不滿足生成條件的時(shí)候需要等待實(shí)際調(diào)用才會(huì)暴露出來(lái)
- bean 在第一次使用的時(shí)候才初始化,影響第一次訪問(wèn)的速度
Spring 懶加載注意事項(xiàng)
- 當(dāng)開(kāi)啟全局懶加載以后,某個(gè) bean 不希望懶加載時(shí)可以加上 @Lazy(false) 注解
- quarz 定時(shí)任務(wù)不能延遲加載,如果延遲加載的話就可能導(dǎo)致定時(shí)任務(wù)失效
- sdk 靜態(tài)方法調(diào)用會(huì)因?yàn)閼屑虞d導(dǎo)致依賴的 bean 無(wú)法加載。例如
@Component public class Client { private static ServiceA service; public class Client(ServiceA service) { Client.service = service } // 當(dāng)調(diào)用 Client.hello()方法時(shí)會(huì)報(bào)錯(cuò) public static String hello() { return service.hello(); } }
開(kāi)啟 Spring 全局 bean 懶加載的方式
方法1.Spring boot 2.2 版本以上,可以設(shè)置 spring.main.lazy-initialization=true
方法2. 增加一個(gè)配置類 LazyInitBeanFactoryPostProcessor
import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; /** * 懶加載加快啟動(dòng)速度 * @author liufang */ @Profile(value = {"qa", "dev"}) @Configuration public class LazyInitBeanFactoryPostProcessor implements BeanFactoryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException { for (String beanName : beanFactory.getBeanDefinitionNames()) { beanFactory.getBeanDefinition(beanName).setLazyInit(true); } } }
到此這篇關(guān)于Spring全局懶加載的優(yōu)劣及使用方法詳解的文章就介紹到這了,更多相關(guān)Spring全局懶加載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java之StringBuffer常見(jiàn)使用方法解析
這篇文章主要介紹了java之StringBuffer常見(jiàn)使用方法解析,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11java實(shí)現(xiàn) 微博登錄、微信登錄、qq登錄實(shí)現(xiàn)代碼
這篇文章主要介紹了java實(shí)現(xiàn) 微博登錄、微信登錄、qq登錄實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10吊打Java面試官!整理了一周的Spring面試大全(附答案)
這篇文章主要介紹了Spring面試資料(附答案)建議收藏留存,學(xué)Java的小伙伴都知道Spring是面試的必問(wèn)環(huán)節(jié),看完了一天就可掌握數(shù)據(jù)結(jié)構(gòu)和算法的面試題,快來(lái)看看吧2021-08-08SpringBoot使用Thymeleaf模板引擎訪問(wèn)靜態(tài)html的過(guò)程
這篇文章主要介紹了SpringBoot使用Thymeleaf模板引擎訪問(wèn)靜態(tài)html的過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Java?Kryo,Protostuff,Hessian序列化方式對(duì)比
這篇文章主要介紹了Java?Kryo,Protostuff,Hessian序列化方式對(duì)比,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-07-07mybatis的大于小于號(hào)轉(zhuǎn)義符號(hào)一覽
這篇文章主要介紹了mybatis的大于小于號(hào)轉(zhuǎn)義符號(hào)一覽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08