国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

在springboot中實現個別bean懶加載的操作

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

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

@Lazy

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

補充知識:springboot組件懶加載的坑及加載規則

什么是懶加載?

懶加載的意思是不在項目啟動的時候實例出來這個組件

@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'; }}

下面是服務的代碼,我們構造函數輸出一段內容以便我們知道它是什么時候加載的,我們使用了@lazy注解,標記且啟動懶加載

@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中實現個別bean懶加載的操作

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

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

我們在api層也加個@lazy,執行項目發現沒有初始化輸出的內容了。

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

我們請求一下api的接口,發現控制臺已經產生輸出,并且對這個類進行了實例化,也就是說懶加載只在使用的時候進行加載,項目啟動的時候不會對類實例化。

在springboot中實現個別bean懶加載的操作

2.關于對service多實現類進行加載

@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'; }}

例子中有三個類,類都實現了ISkill接口,

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

當我們這樣運行時,項目啟動加載的時候是會報錯了,其實服務名稱是對不上,那么解決方法

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

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

3.我們看下@autowired其實是對Api的注入是不?我們有兩個主流的注入方法,一個是setter注入,一個是構造函數注入不是?那我們就可以使用構造函數注入的方式對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中實現個別bean懶加載的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Spring
相關文章:
主站蜘蛛池模板: 久久99亚洲精品久久久久网站 | 日韩免费一级毛片 | 亚洲an日韩专区在线 | 国产一级精品毛片 | 国产黄色片在线免费观看 | 国产成人免费在线 | 国产在线视频网址 | 另类亚洲视频 | 欧美xxxx在线视频 | 韩国啪啪网站 | 国产一级视频在线观看 | 成人老司机深夜福利久久 | 黄色a免费 | 日本欧美韩国一区二区三区 | 一级国产精品一级国产精品片 | 草草影院第一页yycccom | 福利视频午夜 | 亚洲一区视频在线播放 | 国产精品日韩一区二区三区 | 黄色毛片子 | 国产精品自拍亚洲 | www.黄色片网站 | 欧美三级网 | 视频一区二区三区在线 | 一级片免费视频 | 国产20岁美女一级毛片 | 波多野结衣一区二区三区在线观看 | 国产九九精品 | 国产不卡a| 亚洲日韩精品欧美一区二区一 | 毛片高清 | 精品中文字幕不卡在线视频 | 一色屋精品亚洲香蕉网站 | 久久99中文字幕 | 欧美片网站免费 | 欧美一级毛片无遮挡 | 久久99国产亚洲高清观看首页 | 一男一女的一级毛片 | 日本天堂在线视频 | 九九视频在线观看视频6偷拍 | 加勒比综合 |