靜態方法中調用Spring注入的方法(Bean中方法)


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(注釋的方法)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM