午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

在springboot中實(shí)現(xiàn)個別bean懶加載的操作

瀏覽:116日期:2023-04-16 16:04:08

懶加載---就是我們在spring容器啟動的是先不把所有的bean都加載到spring的容器中去,而是在當(dāng)需要用的時候,才把這個對象實(shí)例化到容器中。

@Lazy

在需要懶加載的bean上加上@Lazy就可以了

補(bǔ)充知識:springboot組件懶加載的坑及加載規(guī)則

什么是懶加載?

懶加載的意思是不在項(xiàng)目啟動的時候?qū)嵗鰜磉@個組件

@RestControllerpublic class ApiController { @Autowired Skill kobSkillImpl; @RequestMapping('/getRust') public String test(){ kobSkillImpl.print(); return 'Welcome Rust’s experience'; }}

首先這是個api的代碼

@RestControllerpublic class ApiController { @Autowired Skill kobSkillImpl; @RequestMapping('/getRust') public String test(){ kobSkillImpl.print(); return 'Welcome Rust’s experience'; }}

下面是服務(wù)的代碼,我們構(gòu)造函數(shù)輸出一段內(nèi)容以便我們知道它是什么時候加載的,我們使用了@lazy注解,標(biāo)記且啟動懶加載

@Service@Lazypublic class KoaSkillImpl implements Skill { KoaSkillImpl(){ System.out.println('Load KoaSkill Impl'); } @Override public void print() { System.out.println('I can KOA.js'); }}

在springboot中實(shí)現(xiàn)個別bean懶加載的操作

在這里就能看到,在項(xiàng)目啟動的時候,這個z組件就已經(jīng)開始初始化了,這個說明什么?這個說明@lazy這個注解在現(xiàn)在是無效的。那么解決的方案是什么?

解決方案是在api層也要加個@lazy,也就是說被調(diào)用方是懶加載,但是調(diào)用方不是懶加載,最終還不會執(zhí)行懶加載。

我們在api層也加個@lazy,執(zhí)行項(xiàng)目發(fā)現(xiàn)沒有初始化輸出的內(nèi)容了。

那么,在懶加載的作用下,什么時候會初始化?

我們請求一下api的接口,發(fā)現(xiàn)控制臺已經(jīng)產(chǎn)生輸出,并且對這個類進(jìn)行了實(shí)例化,也就是說懶加載只在使用的時候進(jìn)行加載,項(xiàng)目啟動的時候不會對類實(shí)例化。

在springboot中實(shí)現(xiàn)個別bean懶加載的操作

2.關(guān)于對service多實(shí)現(xiàn)類進(jìn)行加載

@Servicepublic class JavaSkillImpl implements Skill { @Override public void print() { System.out.println('I Can Java'); }}@Service@Lazypublic class KoaSkillImpl implements Skill { KoaSkillImpl(){ System.out.println('Load KoaSkill Impl'); } @Override public void print() { System.out.println('I can KOA.js'); }}@Servicepublic class PythonSkillImpl implements Skill { @Override public void print() { System.out.println('I can Python'); }}@RestController@Lazypublic class ApiController { @Autowired Skill koaSkillImpl; @RequestMapping('/getRust') public String test(){ koaSkillImpl.print(); return 'Welcome Rust’s experience'; }}

例子中有三個類,類都實(shí)現(xiàn)了ISkill接口,

api中用的是KoaSkillImpl,那么我命名成KobSkillImpl行不行?

當(dāng)我們這樣運(yùn)行時,項(xiàng)目啟動加載的時候是會報錯了,其實(shí)服務(wù)名稱是對不上,那么解決方法

1.就是將這個命名改成類名的駝峰

2.就是在@service注解上加@service(“kobSkillImpl”)

3.我們看下@autowired其實(shí)是對Api的注入是不?我們有兩個主流的注入方法,一個是setter注入,一個是構(gòu)造函數(shù)注入不是?那我們就可以使用構(gòu)造函數(shù)注入的方式對api注入,取代@Autowired這個注解

@RestController@Lazypublic class ApiController { Skill javaSkillImpl; ApiController(Skill javaSkillImpl){ this.javaSkillImpl=javaSkillImpl; } @RequestMapping('/getRust') public String test(){ javaSkillImpl.print(); return 'Welcome Rust’s experience'; }}

以上這篇在springboot中實(shí)現(xiàn)個別bean懶加載的操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 大乳av | 欧美视频在线一区 | 亚洲精品一区二区三区蜜桃久 | 午夜a级片 | 狠狠操在线视频 | 伊人春色在线观看 | 欧美一区视频 | 午夜小福利 | 97人人爽人人爽人人爽 | 国产极品在线播放 | 91精品国产乱码久久久 | 国产在线a视频 | 一本色道久久综合亚洲精品酒店 | 成人女同av免费观看 | 丁香六月激情综合 | 精品国产欧美一区二区三区成人 | 国产成人精品一区二区 | 免费在线中文字幕 | 不卡高清av | 欧美福利小视频 | 亚洲欧美在线不卡 | 日本精品视频在线播放 | 国产chinese男男网站大全 | 黄色片一区二区三区 | 中文字幕日产乱码中 | 国产在线一 | 国产三级观看 | 欧美一级淫片免费视频魅影视频 | 久久久久人| 成人深夜视频 | 麻豆国产尤物av尤物在线观看 | 国产欧美日韩中文字幕 | 天天天色综合 | 在线a网| 国产一区二区视频网站 | 天天操天天爽天天干 | 亚洲成人黄色影院 | 中文有码视频 | 午夜视频a | 久久理论片| 午夜不卡av |