亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Spring中@PostConstruct注解的使用講解

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

1、定義

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

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

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

在這里插入圖片描述

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

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

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

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

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

3、代碼演示

我們知道:如果對(duì)象p注入到對(duì)象a,在服務(wù)啟動(dòng)時(shí),會(huì)先執(zhí)行p的構(gòu)造方法,在執(zhí)行a的構(gòu)造方法。 那么如果對(duì)象p注入到對(duì)象a,且在對(duì)象p和對(duì)象a中都有@PostConstruct注解,那么在服務(wù)啟動(dòng)時(shí),他的初始化順序是什么呢,我們做個(gè)小測(cè)試,相關(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中,我們啟動(dòng)程序,輸出結(jié)果如下:

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

結(jié)論:

如果對(duì)象p注入到對(duì)象a,且在對(duì)象p和對(duì)象a中都有@PostConstruct注解,那么在服務(wù)啟動(dòng)時(shí),他的初始化順序是: 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    Java Collection和Collections的區(qū)別

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

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

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

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

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

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

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

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

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

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

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

    java serialVersionUID解決序列化類版本不一致問(wèn)題面試精講

    這篇文章主要為大家介紹了serialVersionUID解決序列化類版本不一致問(wèn)題的面試精講,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(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ā)送郵件案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 淺談對(duì)Java雙冒號(hào)::的理解

    淺談對(duì)Java雙冒號(hào)::的理解

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

最新評(píng)論