1. 程式人生 > 程式設計 >靜態方法中呼叫Spring注入過程解析

靜態方法中呼叫Spring注入過程解析

這篇文章主要介紹了靜態方法中呼叫Spring注入過程解析,文中通過示例程式碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

package io.yong.common.utils;

import javax.annotation.PostConstruct;
import io.renren.common.config.ConfigProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;


/**
 * @author: HYJ
 * @create: 2019-09-25 14:16
 */
@Component
public class CalcUtil {

  /**
   * 需要呼叫的Bean
   */
  @Autowired
  private ConfigProperties configProperties;

  private static CalcUtil calcUtil;

  /**
   *註釋用於在完成依賴項注入以執行任何初始化之後需要執行的方法。必須在類投入使用之前呼叫此方法。
   */
  @PostConstruct
  public void initialize() {
    calcUtil= this;
    calcUtil.configProperties = this.configProperties;
  }


  public static void calcTax() {  
    calcUtil.configProperties.getFileupload();  //此處若是空指標異常,則需要是當前類例項化,即註冊bean,例如上:@Component等
   
  }

Java中該註解的說明:@PostConstruct該註解是javax.annotation包下的,被用來修飾一個非靜態的void()方法。

被@PostConstruct修飾的方法會在伺服器載入Servlet的時候執行,並且只會被伺服器執行一次。PostConstruct在建構函式之後執行,init()方法之前執行。

@PostConstruct註釋規則:除了攔截器這個特殊情況以外,其他情況都不允許有引數,否則spring框架會報IllegalStateException;而且返回值要是void,但實際也可以有返回值,至少不會報錯,只會忽略

通常我們會是在Spring框架中使用到@PostConstruct註解 該註解的方法在整個Bean初始化中的執行順序:

Constructor(構造方法) -> @Autowired(依賴注入) -> @PostConstruct(註釋的方法)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。