日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

深入解讀springboot使用注解@value注入static變量

作者:Mint6 更新時間: 2023-07-22 編程語言

背景

使用springboot的過程中,比較方便的一個功能就是變量注入,使用@value注解,就可以簡單的將配置文件中的變量注入到代碼中。

但是使用過程,發現一個問題,@value對于static變量的支持不太好,所以本文就研究了一下怎么注入static變量。

開始解決問題

1.簡單的靜態變量@value注入示例

(1)A類(定義靜態變量注入屬性值)

在這個類中,我們將屬性"jdbc.url"的值注入到了MyComponent類中定義的靜態變量"url"中。這樣就簡單的完成了

注意setUrl方法不能是static

@Component
public class MyComponent {
    public static String url;

    @Value("${jdbc.url}")
    private void setUrl(String url) {
        MyComponent.url = url;
    }
}

2.如果該變量需要被其他類,在static代碼塊中引用呢?

(2)B類(通過靜態塊引用 A 類的代碼塊)

在這個類中,我們使用靜態塊來引用A類的靜態變量"url"。

@Component
public class AnotherComponent {
    static {
        // 靜態塊內訪問A類的靜態變量
        System.out.println(MyComponent.url);
    }
}

(3)保證A、B類的實例化先后順序

SpringBoot啟動類(注入A類的實例,并確保A類在B類之前初始化):

@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private MyComponent myComponent;

    @Autowired
    private AnotherComponent anotherComponent;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... args) throws Exception {
        // 這里可以訪問MyComponent的實例和AnotherComponent的靜態代碼塊
    }
}

原文鏈接:https://blog.csdn.net/Mint6/article/details/130309979

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新