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

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ù)中實現(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)文章

最新評論

阜新市| 藁城市| 瑞安市| 庆安县| 门源| 二连浩特市| 岚皋县| 陆河县| 玛沁县| 襄城县| 青岛市| 鸡西市| 湖北省| 铁岭县| 乌什县| 玛纳斯县| 平安县| 信丰县| 拜城县| 星子县| 久治县| 莱芜市| 崇左市| 新疆| 阿克陶县| 大渡口区| 苏尼特左旗| 惠水县| 涞水县| 武山县| 盐亭县| 苏尼特右旗| 德庆县| 会昌县| 普兰店市| 东阳市| 兴国县| 静宁县| 桑日县| 龙岩市| 犍为县|