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

Spring框架中@PostConstruct注解詳解

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

初始化方式一:@PostConstruct注解

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

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

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

因此,可以使用@PostConstruct注解來完成初始化,@PostConstruct注解的方法將會在UserService注入完成后被自動調用。

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

總結:類初始化調用順序:

(1)構造方法Constructor

(2)@Autowired

(3)@PostConstruct

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

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

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

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

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

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

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

所以,綜上所述,在spring項目中,在一個bean的初始化過程中,方法執(zhí)行先后順序為

Constructor > @Autowired > @PostConstruct

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

總結

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

相關文章

  • SpringBoot引入SPEL模板字符串替換的兩種方式

    SpringBoot引入SPEL模板字符串替換的兩種方式

    在 Spring Boot 中,我們可以使用字符串替換工具類來實現(xiàn)這些功能,本文主要介紹了SpringBoot引入SPEL模板字符串替換的兩種方式,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Mybatis批量更新報錯問題

    Mybatis批量更新報錯問題

    這篇文章主要介紹了Mybatis批量更新報錯的問題及解決辦法,包括mybatis批量更新的兩種方式,需要的的朋友參考下
    2017-01-01
  • 使用idea開發(fā)javaWeb應用程序的思路(實現(xiàn)用戶的增刪改查)

    使用idea開發(fā)javaWeb應用程序的思路(實現(xiàn)用戶的增刪改查)

    這篇文章主要介紹了使用idea開發(fā)javaWeb應用程序的思路(實現(xiàn)用戶的增刪改查),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 一文詳解Spring Security的基本用法

    一文詳解Spring Security的基本用法

    Spring Security是一個功能強大且高度可定制的身份驗證和訪問控制框架, 提供了完善的認證機制和方法級的授權功能。本文將通過一個簡單的案例了解一下Spring Security的基本用法,需要的可以參考一下
    2022-05-05
  • springboot日期格式化及時差問題分析

    springboot日期格式化及時差問題分析

    這篇文章主要介紹了springboot日期格式化,時差問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • java 實現(xiàn)下壓棧的操作(能動態(tài)調整數(shù)組大小)

    java 實現(xiàn)下壓棧的操作(能動態(tài)調整數(shù)組大小)

    這篇文章主要介紹了java 實現(xiàn)下壓棧的操作(能動態(tài)調整數(shù)組大小),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • java實現(xiàn)檢測是否字符串中包含中文

    java實現(xiàn)檢測是否字符串中包含中文

    本文給大家分享了2個使用java檢測字符串中是否包含中文的代碼,都非常的實用,最后附上了各種字符的unicode編碼的范圍,方便我們以后使用正則進行匹配檢測。
    2015-10-10
  • Spring的編程式事務TransactionTemplate的用法詳解

    Spring的編程式事務TransactionTemplate的用法詳解

    TransactionTemplate提供了一種在代碼中進行編程式事務管理的方式,使開發(fā)人員能夠在方法級別定義事務的開始和結束點,本文介紹了Spring框架中TransactionTemplate的用法,感興趣的朋友跟隨小編一起看看吧
    2023-07-07
  • Springboot的啟動原理詳細解讀

    Springboot的啟動原理詳細解讀

    這篇文章主要介紹了Springboot的啟動原理詳細解讀,springboot項目一般都是打包成jar包直接運行main方法啟動,當然也可以跟傳統(tǒng)的項目一樣打包war包放在tomcat里面啟動.那么springboot怎么直接通過main方法啟動呢,需要的朋友可以參考下
    2023-11-11
  • 簡單介紹Java網絡編程中的HTTP請求

    簡單介紹Java網絡編程中的HTTP請求

    這篇文章主要介紹了簡單介紹Java網絡編程中的HTTP請求,需要的朋友可以參考下
    2015-09-09

最新評論