欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring中@PostConstruct注解的使用講解

 更新時間:2023年11月02日 11:35:15   作者:夢想不會滅  
這篇文章主要介紹了Spring中@PostConstruct注解的使用講解,被@PostConstruct修飾的方法會在服務(wù)器加載Servlet的時候運(yùn)行,并且只會被服務(wù)器執(zhí)行一次,PostConstruct在構(gòu)造函數(shù)之后執(zhí)行,init()方法之前執(zhí)行,PreDestroy()方法在destroy()方法之后執(zhí)行,需要的朋友可以參考下

1、定義

從JavaEE5規(guī)范開始,Servlet中增加了兩個影響Servlet生命周期的注解,@PostConstruct和@PreDestroy,這兩個注解被用來修飾一個非靜態(tài)的void()方法。

2、執(zhí)行順序及其使用場景

被@PostConstruct修飾的方法會在服務(wù)器加載Servlet的時候運(yùn)行,并且只會被服務(wù)器執(zhí)行一次。PostConstruct在構(gòu)造函數(shù)之后執(zhí)行,init()方法之前執(zhí)行。PreDestroy()方法在destroy()方法之后執(zhí)行

在這里插入圖片描述

從依賴注入的字面意思可以知道,要將對象p注入到對象a,那么首先就必須得生成對象p和對象a,才能執(zhí)行注入。

所以,如果一個類A中有個成員變量p被@Autowried或@Resource注解,那么成員變量p注入是發(fā)生在a的構(gòu)造方法執(zhí)行完之后的。

如果想在生成對象時完成某些初始化操作,而偏偏這些初始化操作又依賴于依賴注入,那么這個初始化操作就無法在構(gòu)造函數(shù)中實(shí)現(xiàn)。

這時,可以使用@PostConstruct 注解一個方法來完成初始化,被@PostConstruct注解的方法將會在依賴注入完成后被自動調(diào)用。 所以,@PostConstruct的執(zhí)行順序如下:

靜態(tài)方法 >> Constructor >> @Autowired >> @PostConstruct

3、代碼演示

我們知道:如果對象p注入到對象a,在服務(wù)啟動時,會先執(zhí)行p的構(gòu)造方法,在執(zhí)行a的構(gòu)造方法。 那么如果對象p注入到對象a,且在對象p和對象a中都有@PostConstruct注解,那么在服務(wù)啟動時,他的初始化順序是什么呢,我們做個小測試,相關(guān)代碼如下:

@Service
public class RoleService {

    static {
        System.out.println("RoleService static");
    }

    public RoleService(){
        System.out.println("RoleService Constructor");
    }

    @PostConstruct
    public void init(){
        System.out.println("RoleService PostConstruct");
    }

}
@Service
public class UserService {
    @Resource
    private RoleService roleService;

    static {
        System.out.println("UserService static");
    }

    public UserService(){
        System.out.println("userService Constructor");
    }

    @PostConstruct
    public void init(){
        System.out.println("UserService PostConstruct");
    }
    
}

我們可以看到,RoleService注入到了UserService中,我們啟動程序,輸出結(jié)果如下:

RoleService static
RoleService Constructor
RoleService PostConstruct
UserService static
userService Constructor
UserService PostConstruct

結(jié)論:

如果對象p注入到對象a,且在對象p和對象a中都有@PostConstruct注解,那么在服務(wù)啟動時,他的初始化順序是: p static -> p Constructor -> p PostConstruct -> a static -> a Constructor -> a PostConstruct

需要注意:

Spring有默認(rèn)的類加載順序 如果UserService注入到了RoleService,類加載順序默認(rèn)是先加載RoleService,所以它的執(zhí)行順序就是 RoleService static -> RoleService Constructor -> UserService static -> UserService Constructor -> UserService PostConstruct -> RoleService PostConstruct

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

相關(guān)文章

  • Java INPUTSTREAM如何實(shí)現(xiàn)重復(fù)使用

    Java INPUTSTREAM如何實(shí)現(xiàn)重復(fù)使用

    這篇文章主要介紹了Java INPUTSTREAM如何實(shí)現(xiàn)重復(fù)使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Java Collection和Collections的區(qū)別

    Java Collection和Collections的區(qū)別

    本文主要介紹了Java Collection和Collections的區(qū)別,Collection?是表示集合的接口,而?Collections?是對集合進(jìn)行操作的工具類,下面就來介紹一下具體用法,感興趣的可以了解一下
    2023-12-12
  • Java對象的內(nèi)存布局詳細(xì)介紹

    Java對象的內(nèi)存布局詳細(xì)介紹

    這篇文章主要介紹了Java對象的內(nèi)存布局,我們知道在Java中基本數(shù)據(jù)類型的大小,例如int類型占4個字節(jié)、long類型占8個字節(jié),那么Integer對象和Long對象會占用多少內(nèi)存呢?本文介紹一下Java對象在堆中的內(nèi)存結(jié)構(gòu)以及對象大小的計算
    2023-02-02
  • 23種設(shè)計模式(10)java組合模式

    23種設(shè)計模式(10)java組合模式

    這篇文章主要為大家詳細(xì)介紹了23種設(shè)計模式之java組合模式,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • JAVA異常和自定義異常處理方式

    JAVA異常和自定義異常處理方式

    這篇文章主要介紹了JAVA異常和自定義異常處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • SpringBoot動態(tài)定時任務(wù)實(shí)現(xiàn)完整版

    SpringBoot動態(tài)定時任務(wù)實(shí)現(xiàn)完整版

    最近有幸要開發(fā)個動態(tài)定時任務(wù),這里簡單再梳理一下,下面這篇文章主要給大家介紹了關(guān)于SpringBoot動態(tài)定時任務(wù)實(shí)現(xiàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 關(guān)于Java父類沒有無參構(gòu)造方法子類處理方法

    關(guān)于Java父類沒有無參構(gòu)造方法子類處理方法

    父類無參構(gòu)造方法,子類不寫,其實(shí)會默認(rèn)調(diào)用父類的無參構(gòu)造方法也就是用super(),編譯運(yùn)行后,會打印出"子類會調(diào)用Father的第一個構(gòu)造方法,這篇文章給大家介紹關(guān)于Java父類沒有無參構(gòu)造方法子類處理方法,感興趣的朋友一起看看吧
    2024-01-01
  • java serialVersionUID解決序列化類版本不一致問題面試精講

    java serialVersionUID解決序列化類版本不一致問題面試精講

    這篇文章主要為大家介紹了serialVersionUID解決序列化類版本不一致問題的面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • java實(shí)現(xiàn)系統(tǒng)捕獲異常發(fā)送郵件案例

    java實(shí)現(xiàn)系統(tǒng)捕獲異常發(fā)送郵件案例

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)系統(tǒng)捕獲異常發(fā)送郵件案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 淺談對Java雙冒號::的理解

    淺談對Java雙冒號::的理解

    這篇文章主要介紹了淺談對Java雙冒號::的理解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06

最新評論