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

Spring中@Lazy注解的使用技巧與實例解析

 更新時間:2025年03月01日 11:52:54   作者:t0_54manong  
@Lazy注解在Spring框架中用于延遲Bean的初始化,優(yōu)化應(yīng)用啟動性能,它不僅適用于@Bean和@Component,還可以用于注入點,通過將Bean的初始化延遲到第一次使用時,可以減少不必要的資源消耗,本文介紹Spring中@Lazy注解的使用技巧與實例解析,感興趣的朋友一起看看吧

在Spring框架中,@Lazy注解是一個非常實用的功能,它可以幫助我們延遲Bean的初始化時間,從而優(yōu)化應(yīng)用的啟動性能。從Spring 4.0.0開始,@Lazy不僅可以應(yīng)用于@Bean@Component,還可以直接作用于注入點(如@Autowired@Inject@Resource)。這意味著我們可以更靈活地控制Bean的初始化時機,避免不必要的資源消耗。

一、@Lazy注解的作用

(一)延遲Bean的初始化

在Spring中,默認(rèn)情況下,所有的Bean在容器啟動時都會被初始化。然而,有些Bean可能并不需要在啟動時立即加載,而是可以在需要時才進行初始化。@Lazy注解正是為了解決這個問題而設(shè)計的。它可以將Bean的初始化延遲到第一次被使用時,從而減少應(yīng)用啟動時的資源消耗。

(二)與@Autowired結(jié)合使用

當(dāng)@Lazy@Autowired一起使用時,它會延遲依賴Bean的初始化,直到依賴被實際調(diào)用。這種用法在處理復(fù)雜的依賴關(guān)系時非常有用,可以避免不必要的初始化開銷。

二、實例解析

為了更好地理解@Lazy的作用,我們通過一個簡單的Spring項目來展示其效果。

(一)代碼示例

1. 普通初始化的Bean

package com.logicbig.example;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
public class MyEagerBean {
    @Autowired
    @Lazy
    private MyLazyBean myLazyBean;
    @PostConstruct
    public void init() {
        System.out.println(getClass().getSimpleName() + " has been initialized");
    }
    public void doSomethingWithLazyBean() {
        System.out.println("Using lazy bean");
        myLazyBean.doSomething();
    }
}

2. 延遲初始化的Bean

public class MyLazyBean {
    @PostConstruct
    public void init() {
        System.out.println(getClass().getSimpleName() + " has been initialized");
    }
    public void doSomething() {
        System.out.println("inside lazy bean doSomething()");
    }
}

3. 主類

public class LazyExampleMain {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
        System.out.println("--- container initialized ---");
        MyEagerBean bean = context.getBean(MyEagerBean.class);
        System.out.println("MyEagerBean retrieved from bean factory");
        bean.doSomethingWithLazyBean();
    }
}

(二)運行結(jié)果

當(dāng)運行上述代碼時,輸出如下:

MyEagerBean has been initialized
--- container initialized ---
MyEagerBean retrieved from bean factory
Using lazy bean
MyLazyBean has been initialized
inside lazy bean doSomething()

從輸出中可以看到,MyLazyBean的初始化被延遲到了MyEagerBean調(diào)用doSomethingWithLazyBean()方法時。

(三)對比測試

如果我們將@Lazy注解從MyEagerBean中移除,即:

public class MyEagerBean {
    @Autowired
    //@Lazy
    private MyLazyBean myLazyBean;
    ...
}

運行結(jié)果會變成:

MyLazyBean has been initialized
MyEagerBean has been initialized
--- container initialized ---
MyEagerBean retrieved from bean factory
Using lazy bean
inside lazy bean doSomething()

此時,MyLazyBean會在容器啟動時被初始化,而不是延遲到第一次使用時。

三、@Lazy的工作原理

當(dāng)@Lazy注解被應(yīng)用于注入點時,Spring會為該注入點創(chuàng)建一個延遲解析的代理對象,而不是直接初始化目標(biāo)Bean。只有當(dāng)該Bean被實際調(diào)用時,Spring才會真正初始化它。

四、總結(jié)

@Lazy注解是Spring框架中一個非常實用的功能,它可以幫助我們延遲Bean的初始化,從而優(yōu)化應(yīng)用的啟動性能。通過與@Autowired等注解結(jié)合使用,我們可以在需要時才加載Bean,避免不必要的資源消耗。在實際開發(fā)中,合理使用@Lazy可以顯著提升應(yīng)用的性能和可維護性。

到此這篇關(guān)于Spring中@Lazy注解的使用技巧與實例解析的文章就介紹到這了,更多相關(guān)Spring @Lazy注解內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于SpringMVC在Controller層方法的參數(shù)解析詳解

    關(guān)于SpringMVC在Controller層方法的參數(shù)解析詳解

    在SpringMVC中,控制器Controller負(fù)責(zé)處理由DispatcherServlet分發(fā)的請求,下面這篇文章主要給大家介紹了關(guān)于SpringMVC在Controller層方法的參數(shù)解析的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Java Mail郵件發(fā)送如何實現(xiàn)簡單封裝

    Java Mail郵件發(fā)送如何實現(xiàn)簡單封裝

    這篇文章主要介紹了Java Mail郵件發(fā)送如何實現(xiàn)簡單封裝,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-11-11
  • JavaEE在線人數(shù)管理系統(tǒng)

    JavaEE在線人數(shù)管理系統(tǒng)

    這篇文章主要為大家分享了JavaEE在線人數(shù)管理系統(tǒng),顯示在線人數(shù)、在線人詳細(xì)信息、管理員踢人等功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java添加事件監(jiān)聽的四種方法代碼實例

    Java添加事件監(jiān)聽的四種方法代碼實例

    這篇文章主要介紹了Java添加事件監(jiān)聽的四種方法代碼實例,本文直接給出代碼示例,并用注釋說明,需要的朋友可以參考下
    2014-09-09
  • java的三種隨機數(shù)生成方式的實現(xiàn)方法

    java的三種隨機數(shù)生成方式的實現(xiàn)方法

    這篇文章主要介紹了java的三種隨機數(shù)生成方式的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • java關(guān)于字符串的常用API

    java關(guān)于字符串的常用API

    字符串其實就是一串連續(xù)的字符,它是由許多單個字符連接而成的。如多個英文字母所組成的一個英文單詞。字符串中可以包含任意字符,這些字符必須包含在一對雙引號之內(nèi),今天就來介紹字符串常用的API
    2023-05-05
  • PostConstruct注解標(biāo)記類ApplicationContext未加載空指針

    PostConstruct注解標(biāo)記類ApplicationContext未加載空指針

    這篇文章主要為大家介紹了@PostConstruct注解標(biāo)記類ApplicationContext未加載空指針示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Java中token的存儲和獲取實例代碼

    Java中token的存儲和獲取實例代碼

    關(guān)于java獲取微信Token驗證的問題相信很多人都遇見過,尤其是對剛接觸微信開發(fā)的人來說確實有點棘手,下面這篇文章主要給大家介紹了關(guān)于Java中token存儲和獲取的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Springcloud微服務(wù)架構(gòu)基礎(chǔ)知識解析

    Springcloud微服務(wù)架構(gòu)基礎(chǔ)知識解析

    這篇文章主要介紹了Springcloud微服務(wù)架構(gòu)基礎(chǔ)知識解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Java代碼優(yōu)化實現(xiàn)Zip壓縮大文件從30秒到近乎1秒的優(yōu)化過程

    Java代碼優(yōu)化實現(xiàn)Zip壓縮大文件從30秒到近乎1秒的優(yōu)化過程

    本文詳細(xì)介紹了一種使用Java進行文件壓縮的優(yōu)化過程,從最初的無緩沖壓縮到使用緩沖區(qū),再到利用NIO的Channel和內(nèi)存映射文件技術(shù),最終實現(xiàn)壓縮速度的顯著提升,感興趣的可以了解一下
    2025-09-09

最新評論

百色市| 新巴尔虎右旗| 长葛市| 昭苏县| 汶上县| 鲁山县| 象州县| 蒙自县| 台北县| 泰安市| 靖江市| 无棣县| 黑水县| 平武县| 高州市| 霞浦县| 北安市| 固安县| 务川| 南江县| 英德市| 芒康县| 衡阳市| 凤山县| 彭水| 祁东县| 成安县| 新龙县| 沙河市| 汕尾市| 布尔津县| 拉萨市| 涟水县| 潼关县| 老河口市| 漯河市| 甘孜| 沭阳县| 长沙市| 龙陵县| 密云县|