Spring boot 在靜態(tài)類中注入spring組件

在做項目的時候突然有這樣一個需求,在工具類中需要注入spring組件,由于工具類都是靜態(tài)的直接注入或者new一個類都是不行的,因此了解了一下相關(guān)用法.

方案

  1. 首先需要將該類變成一個spring的bean,也就是在類上添加@Component注解,當(dāng)然其他相關(guān)注解也可以

  2. 在類中聲明一個該類的靜態(tài)對象,同時也將需要注入的bean注入進(jìn)來.

  3. 寫一個init()方法并在上面添加@PostConstruct注解,在方法中將this賦給該類的靜態(tài)對象,并且使用將依賴bean賦給靜態(tài)對象的bean

  4. 使用的時候使用對象.屬性即可

我的項目里是將一個自定義的文件上傳路徑寫在配置文件中,然后在文件工具類中使用它.相關(guān)關(guān)鍵代碼如下

@Component
public class FileUtil {

    private static FileUtil fileUtil;

    @Autowired
    private ProjectProperties projectProperties;

    @PostConstruct
    public void init() {
        fileUtil = this;
        fileUtil.projectProperties = this.projectProperties;
    }

    /**
     * 獲取圖片根目錄
     *
     * @return
     */
    public static String getImgBasePath() {
        String os = System.getProperty("os.name");
        String basePath;
        if (os.toLowerCase().startsWith("win")) {
            basePath = "D:/projectdev/image/";
        } else {
            basePath = fileUtil.projectProperties.getFilePathProperties().getBasePath();
        }
        basePath = basePath.replace("/", SEPERATOR);
        return basePath;
    }
}

以上就可以實現(xiàn)在靜態(tài)類中注入依賴了.

注:

  • 上述測試在ubuntu16.04 lts jdk1.8 spring boot 1.5.6.RELEASE中成功
  • 上述文字皆為個人看法,如有錯誤或建議請及時聯(lián)系我
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,282評論 6 342
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,659評論 19 139
  • 什么是Spring Spring是一個開源的Java EE開發(fā)框架。Spring框架的核心功能可以應(yīng)用在任何Jav...
    jemmm閱讀 16,779評論 1 133
  • S姐身材芊細(xì)小巧玲瓏,滿口柔聲細(xì)語,擁有一張笑容可掬的臉,雖談不上是個絕色美女,但是氣質(zhì)相當(dāng)溫潤,當(dāng)她手里端著...
    如愿如意閱讀 756評論 0 0
  • 2016年馬上就要過去了,我們園誠邀各位家長和寶寶們一起做手工!
    清河幼兒園閱讀 174評論 0 0

友情鏈接更多精彩內(nèi)容