最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年10月19日 09:07:48   作者:會遲到但不會缺席  
這篇文章主要介紹了在springboot中實現(xiàn)個別bean懶加載的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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

@Lazy

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

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

什么是懶加載?

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

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

首先這是個api的代碼

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

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

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

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

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

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

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

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

2.關于對service多實現(xiàn)類進行加載

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

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

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

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

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

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

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

@RestController
@Lazy
public class ApiController {

  Skill javaSkillImpl;
  ApiController(Skill javaSkillImpl){
    this.javaSkillImpl=javaSkillImpl;
  }


  @RequestMapping("/getRust")
  public String test(){
    javaSkillImpl.print();
    return "Welcome Rust's experience";
  }
}

以上這篇在springboot中實現(xiàn)個別bean懶加載的操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java多線程中的ReentrantLock可中斷鎖詳細解讀

    Java多線程中的ReentrantLock可中斷鎖詳細解讀

    這篇文章主要介紹了Java多線程中的ReentrantLock可中斷鎖詳細解讀,ReentrantLock中的lockInterruptibly()方法使得線程可以在被阻塞時響應中斷,比如一個線程t1通過lockInterruptibly()方法獲取到一個可重入鎖,并執(zhí)行一個長時間的任務,需要的朋友可以參考下
    2023-12-12
  • hbase訪問方式之java api

    hbase訪問方式之java api

    這篇文章主要介紹了hbase訪問方式之java api,需要的朋友可以參考下
    2017-09-09
  • Java InputStream的多種使用詳解

    Java InputStream的多種使用詳解

    這篇文章主要介紹了Java InputStream的多種使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • java實現(xiàn)俄羅斯方塊小游戲

    java實現(xiàn)俄羅斯方塊小游戲

    這篇文章主要為大家詳細介紹了java實現(xiàn)俄羅斯方塊小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • maven項目pom.xml中parent標簽的使用小結

    maven項目pom.xml中parent標簽的使用小結

    使用maven是為了更好的幫項目管理包依賴,maven的核心就是pom.xml,當我們需要引入一個jar包時,在pom文件中加上就可以從倉庫中依賴到相應的jar包,本文就來介紹一下maven項目pom.xml中parent標簽的使用小結,感興趣的可以了解一下
    2023-12-12
  • SpringBoot集成Hadoop實現(xiàn)文件的上傳和下載功能

    SpringBoot集成Hadoop實現(xiàn)文件的上傳和下載功能

    Spring?Hadoop簡化了Apache?Hadoop,提供了一個統(tǒng)一的配置模型以及簡單易用的API來使用HDFS、MapReduce、Pig以及Hive,這篇文章主要介紹了SpringBoot集成Hadoop實現(xiàn)文件的上傳和下載,需要的朋友可以參考下
    2024-07-07
  • Java經(jīng)緯度小數(shù)與度分秒相互轉換工具類示例詳解

    Java經(jīng)緯度小數(shù)與度分秒相互轉換工具類示例詳解

    這篇文章主要介紹了Java經(jīng)緯度小數(shù)與度分秒相互轉換工具類,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • Java數(shù)據(jù)結構之KMP算法的實現(xiàn)

    Java數(shù)據(jù)結構之KMP算法的實現(xiàn)

    這篇文章主要為大家詳細介紹了Java數(shù)據(jù)結構中KMP算法的原理與實現(xiàn),文中的示例代碼講解詳細,對我們學習Java有一定的幫助,需要的可以參考一下
    2022-11-11
  • maven多模塊打包注意事項詳解

    maven多模塊打包注意事項詳解

    這篇文章主要為大家介紹了maven多模塊打包注意事項詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 淺析MMAP零拷貝在RocketMQ中的運用

    淺析MMAP零拷貝在RocketMQ中的運用

    零拷貝技術可以減少數(shù)據(jù)拷貝和共享總線操作的次數(shù),消除傳輸數(shù)據(jù)在存儲器之間不必要的中間拷貝次數(shù),從而有效地提高數(shù)據(jù)傳輸效率,這篇文章主要介紹了MMAP零拷貝在RocketMQ中的運用,需要的朋友可以參考下
    2022-07-07

最新評論

巴林右旗| 呈贡县| 吉安市| 衡东县| 五家渠市| 重庆市| 徐水县| 台南市| 五寨县| 资阳市| 新密市| 天祝| 遂平县| 札达县| 宜兰市| 德令哈市| 读书| 兴仁县| 彭山县| 晋江市| 红安县| 堆龙德庆县| 鄂州市| 崇州市| 聂拉木县| 尖扎县| 延吉市| 深州市| 大悟县| 巴中市| 咸阳市| 霍山县| 菏泽市| 仙桃市| 天长市| 辛集市| 富平县| 固始县| 克山县| 苗栗县| 襄汾县|