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

Spring框架中@PostConstruct注解詳解

 更新時(shí)間:2022年07月18日 10:22:12   作者:大局觀的小老虎  
在Spring項(xiàng)目經(jīng)常遇到@PostConstruct注解,下面這篇文章主要給大家介紹了關(guān)于Spring框架中@PostConstruct注解的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

初始化方式一:@PostConstruct注解

假設(shè)類UserController有個(gè)成員變量UserService被@Autowired修飾,那么UserService的注入是在UserController的構(gòu)造方法之后執(zhí)行的。

如果想在UserController對(duì)象生成時(shí)候完成某些初始化操作,而偏偏這些初始化操作又依賴于依賴注入的對(duì)象,那么就無法在構(gòu)造函數(shù)中實(shí)現(xiàn)(ps:spring啟動(dòng)時(shí)初始化異常),例如:

public class UserController {
    @Autowired
    private UserService userService;
 
    public UserController() {
        // 調(diào)用userService的自定義初始化方法,此時(shí)userService為null,報(bào)錯(cuò)
        userService.userServiceInit();
    }
}

因此,可以使用@PostConstruct注解來完成初始化,@PostConstruct注解的方法將會(huì)在UserService注入完成后被自動(dòng)調(diào)用。

public class UserController {
    @Autowired
    private UserService userService;
 
    public UserController() {
    }
 
    // 初始化方法
    @PostConstruct
    public void init(){
        userService.userServiceInit();
    }
}

總結(jié):類初始化調(diào)用順序:

(1)構(gòu)造方法Constructor

(2)@Autowired

(3)@PostConstruct

初始化方式二:實(shí)現(xiàn)InitializingBean接口

除了采用注解完成初始化,也可以通過實(shí)現(xiàn)InitializingBean完成類的初始化

public class UserController implements InitializingBean {
    @Autowired
    private UserService userService;
 
    public UserController() {
    }
 
    // 初始化方法
    @Override
    public void afterPropertiesSet() throws Exception {
        userService.userServiceInit();
    }
}

比較常見的如SqlSessionFactoryBean,它就是通過實(shí)現(xiàn)InitializingBean完成初始化的。

@Override
public void afterPropertiesSet() throws Exception {
 // buildSqlSessionFactory()是完成初始化的核心方法,必須在構(gòu)造方法調(diào)用后執(zhí)行
 this.sqlSessionFactory = buildSqlSessionFactory(); 
}

補(bǔ)充:@PostConstruct注釋規(guī)則

  1. 除了攔截器這個(gè)特殊情況以外,其他情況都不允許有參數(shù),否則spring框架會(huì)報(bào)IllegalStateException;而且返回值要是void,但實(shí)際也可以有返回值,至少不會(huì)報(bào)錯(cuò),只會(huì)忽略
  2. 方法隨便你用什么權(quán)限來修飾,public、protected、private都可以,反正功能是由反射來實(shí)現(xiàn)
  3. 方法不可以是static的,但可以是final的

所以,綜上所述,在spring項(xiàng)目中,在一個(gè)bean的初始化過程中,方法執(zhí)行先后順序?yàn)?/p>

Constructor > @Autowired > @PostConstruct

先執(zhí)行完構(gòu)造方法,再注入依賴,最后執(zhí)行初始化操作,所以這個(gè)注解就避免了一些需要在構(gòu)造方法里使用依賴組件的尷尬。

總結(jié)

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

相關(guān)文章

  • FeignClient如何通過配置變量調(diào)用配置文件url

    FeignClient如何通過配置變量調(diào)用配置文件url

    這篇文章主要介紹了FeignClient如何通過配置變量調(diào)用配置文件url,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java多線程Callable和Future接口區(qū)別

    Java多線程Callable和Future接口區(qū)別

    這篇文章主要介紹了Java多線程Callable和Future接口區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Mybatis新手教程之簡(jiǎn)單入門

    Mybatis新手教程之簡(jiǎn)單入門

    這篇文章主要給大家介紹了關(guān)于Mybatis新手教程之簡(jiǎn)單入門的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 解決springdataJPA對(duì)原生sql支持的問題

    解決springdataJPA對(duì)原生sql支持的問題

    這篇文章主要介紹了解決springdataJPA對(duì)原生sql支持的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 設(shè)置session有效時(shí)間的三種方式

    設(shè)置session有效時(shí)間的三種方式

    這篇文章主要介紹了設(shè)置session有效時(shí)間的三種方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • SpringCloud實(shí)現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway詳細(xì)分析

    SpringCloud實(shí)現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway詳細(xì)分析

    這篇文章主要介紹了SpringCloud實(shí)現(xiàn)服務(wù)調(diào)用feign與熔斷hystrix和網(wǎng)關(guān)gateway,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-04-04
  • spring boot中多線程開發(fā)的注意事項(xiàng)總結(jié)

    spring boot中多線程開發(fā)的注意事項(xiàng)總結(jié)

    spring boot 通過任務(wù)執(zhí)行器 taskexecutor 來實(shí)現(xiàn)多線程和并發(fā)編程。下面這篇文章主要給大家介紹了關(guān)于spring boot中多線程開發(fā)的注意事項(xiàng),文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • Maven繼承父工程時(shí)的relativePath標(biāo)簽解析用法小結(jié)

    Maven繼承父工程時(shí)的relativePath標(biāo)簽解析用法小結(jié)

    relativePath 的作用是為了找到父級(jí)工程的pom.xml,本文主要介紹了Maven繼承父工程時(shí)的relativePath標(biāo)簽解析用法小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java中BitMap(位圖)hutool版、IntMap、LongMap示例詳解

    Java中BitMap(位圖)hutool版、IntMap、LongMap示例詳解

    這篇文章主要給大家介紹了關(guān)于Java中BitMap(位圖)hutool版、IntMap、LongMap的相關(guān)資料,通過位運(yùn)算高效存儲(chǔ)和檢索整數(shù),相比于傳統(tǒng)數(shù)組,它們?cè)趦?nèi)存占用和性能上都有顯著優(yōu)勢(shì),需要的朋友可以參考下
    2024-12-12
  • SpringBoot使用itext填充pdf表單及導(dǎo)出pdf的流程

    SpringBoot使用itext填充pdf表單及導(dǎo)出pdf的流程

    由于最近開發(fā)的項(xiàng)目需要用到打印單據(jù),就在網(wǎng)上找了一下方案,反反復(fù)復(fù),都沒有找到合適的,借鑒了網(wǎng)上資源,使用itext5、itext7的工具包,所以本文介紹了SpringBoot使用itext填充pdf表單及導(dǎo)出pdf的流程,需要的朋友可以參考下
    2024-09-09

最新評(píng)論

嵩明县| 井研县| 庄浪县| 肇庆市| 松江区| 博罗县| 祁门县| 错那县| 铜陵市| 望都县| 将乐县| 临武县| 五寨县| 孟津县| 彭山县| 禄丰县| 阿拉善盟| 雷山县| 凌源市| 灯塔市| 旌德县| 监利县| 醴陵市| 岑溪市| 内乡县| 张家港市| 丰县| 梅河口市| 南华县| 文登市| 鲁山县| 东乌| 林口县| 泰州市| 壤塘县| 萍乡市| 河西区| 吴川市| 肥城市| 东莞市| 沈丘县|