@PostConstruct、@Autowired與構(gòu)造函數(shù)的執(zhí)行順序詳解
一、@PostConstruct介紹
Java提供的注解,被用來(lái)修飾方法,被@PostConstruct修飾的方法會(huì)在服務(wù)器加載Servlet的時(shí)候運(yùn)行,并且只會(huì)被服務(wù)器執(zhí)行一次。
PostConstruct在構(gòu)造函數(shù)之后執(zhí)行,init()方法之前執(zhí)行。
(1) 結(jié)論:
調(diào)用的順序?yàn)椋?構(gòu)造函數(shù) > @Autowired > @PostConstruct
(2) 作用:
@PostConstruct注解的方法在項(xiàng)目啟動(dòng)的時(shí)候執(zhí)行這個(gè)方法,也可以理解為在spring容器啟動(dòng)的時(shí)候執(zhí)行,可作為一些數(shù)據(jù)的常規(guī)化加載,比如讀取數(shù)據(jù)字典之類、目錄樹(shù)緩存
二、Spring框架中在bean初始化和銷毀時(shí)候執(zhí)行實(shí)現(xiàn)方式
Spring框架中在bean初始化和銷毀時(shí)候執(zhí)行某個(gè)方法的三種實(shí)現(xiàn)方式。
(1)Spring框架中通過(guò)注解@PostConastruct 和 @PreDestroy來(lái)實(shí)現(xiàn)Bean初始化執(zhí)行和銷毀時(shí)候執(zhí)行方法;
(2)Spring框架中通過(guò)實(shí)現(xiàn)接口InitializingBean ,DisposableBean來(lái)實(shí)現(xiàn)Bean初始化執(zhí)行和銷毀時(shí)候執(zhí)行方法;
(3)Spring框架中通過(guò)xml配置文件中bean的init-method=“” destroy-method=""來(lái)實(shí)現(xiàn)Bean初始化執(zhí)行和銷毀時(shí)候執(zhí)行方法;
- Spring Bean執(zhí)行順序:

三、項(xiàng)目驗(yàn)證
1.MyServiceImpl
package com.huahua.myIdea.service.serviceImpl;
import com.huahua.myIdea.service.MyService;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
@Service
public class MyServiceImpl implements MyService, InitializingBean {
@Override
public int addTotal(int x, int y) {
return 0;
}
@Override
public void afterPropertiesSet() throws Exception {
System.out.println("開(kāi)始執(zhí)行 afterPropertiesSet 方法: MyServiceImpl");
}
@PostConstruct
public void postConstructMethod() {
System.out.println("開(kāi)始執(zhí)行 PostConstruct 方法: MyServiceImpl");
}
@Autowired
private void testAutowired(){
System.out.println("開(kāi)始執(zhí)行 testAutowired 方法: MyServiceImpl");
}
MyServiceImpl(){
System.out.println("開(kāi)始執(zhí)行 構(gòu)造函數(shù)MyServiceImpl : MyServiceImpl");
}
}
2.測(cè)試結(jié)果

3.項(xiàng)目源碼
項(xiàng)目結(jié)構(gòu)及代碼下載,歡迎star~~

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的方案
我們?cè)陧?xiàng)目中經(jīng)常碰到需要讀取固定文件的場(chǎng)景,如模板文件,一般做法是將文件放在resources目錄下,程序通過(guò)多種方式可以順利讀取文件,這篇文章主要給大家介紹了關(guān)于Spring?Boot項(xiàng)目獲取resources目錄下文件并返回給前端的相關(guān)資料,需要的朋友可以參考下2024-07-07
Java中的拷貝數(shù)組CopyOnWriteArrayList詳解
這篇文章主要介紹了Java中的拷貝數(shù)組CopyOnWriteArrayList詳解,ArrayList和LinkedList都不是線程安全的,如果需要線程安全的List,可以使用synchronizedList來(lái)生成一個(gè)同步list,但是這個(gè)同步list的方法都是通過(guò)synchronized修飾來(lái)保證同步的,需要的朋友可以參考下2023-12-12
SpringCloud?Nacos服務(wù)分級(jí)存儲(chǔ)模型詳解
Nacos服務(wù)分級(jí)存儲(chǔ)模型是Nacos存儲(chǔ)服務(wù)注冊(cè)信息和配置信息的核心模型之一,本文將對(duì)?Nacos?服務(wù)分級(jí)存儲(chǔ)模型進(jìn)行深入解析,感興趣的朋友一起看看吧2024-02-02
java開(kāi)發(fā)ShardingSphere的路由引擎類型示例詳解
這篇文章主要為大家介紹了java開(kāi)發(fā)ShardingSphere的路由引擎類型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
sms4j?2.0?全新來(lái)襲功能的調(diào)整及maven變化詳解
這篇文章主要介紹了sms4j?2.0?全新來(lái)襲功能的調(diào)整及maven變化詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
springboot?vue測(cè)試平臺(tái)開(kāi)發(fā)調(diào)通前后端環(huán)境實(shí)現(xiàn)登錄
這篇文章主要介紹了springboot?vue測(cè)試平臺(tái)開(kāi)發(fā)調(diào)通前后端環(huán)境實(shí)現(xiàn)登錄詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Spring使用@Autowired注解實(shí)現(xiàn)自動(dòng)裝配方式
這篇文章主要介紹了Spring使用@Autowired注解實(shí)現(xiàn)自動(dòng)裝配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

