自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SpringBoot中靜態(tài)變量注入方案,一網打盡

開發(fā) 前端
昨天同事來找我。說自己想使用@Value注解來注入值,但是發(fā)現(xiàn)注入不進去,想讓我?guī)兔纯?。研究了一?最后發(fā)現(xiàn)是@Value注解無法注入靜態(tài)變量。下面我們一起來回顧一下本次的bug。

[[431987]]

前言

Hi,大家好,我是麥洛,昨天同事來找我。說自己想使用@Value注解來注入值,但是發(fā)現(xiàn)注入不進去,想讓我?guī)兔纯?。研究了一?最后發(fā)現(xiàn)是@Value注解無法注入靜態(tài)變量。下面我們一起來回顧一下本次的bug。

普通變量

首先我們來看看。如何給普通變量注入值?

例如,application-dev.yml 配置文件有如下配置:

給普通變量賦值時,直接在變量聲明之上添加@Value()注解即可,如下所示:

這個大家應該很熟悉了,這里就不再贅述。

靜態(tài)變量

我們來看看昨天的問題,我們想給項目中的文件上傳封裝一個工具類。阿里云oss的相關信息我們配置在配置文件中,需要將信息注入到工具類中的變量。為了方便直接使用變量,我們把把變量定義為靜態(tài)變量。當要給靜態(tài)變量注入值的時候,若是在靜態(tài)變量聲明之上直接添加@Value()注解是無效的。如下圖所示。

解決方案

方案一

若要給靜態(tài)變量賦值,可以使用set()方法注入。

  1. 類上加入@Component注解
  2. @Value注解標記set方法
  3. 方法名(例如setOssUrl)和參數(shù)名(例如ossUrl)可以任意命名

如下所示:

方案二

如果你覺得@value注解麻煩??梢允褂聾ConfigurationProperties注解代替,這樣比較簡潔

  1. 前綴要寫合適
  2. 方法名(例如setOssUrl)必須和屬性保持一致,例如寫為setUrl()會注入失敗
  3. 類上加入@Component注解

方案三

  1. 類上加入@Component注解
  2. @PostConstruct注解修飾的方法中進行賦值操作

使用場景

那么問題來啦!我們什么場景下需要把值注入到靜態(tài)變量?

場景一

場景二

工具類中將值注入靜態(tài)變量,就可以直接在靜態(tài)方法之中使用,我本文中遇到的正是這個場景

總結

本文中,我們從一個實際問題出發(fā),探尋了三種在springboot中靜態(tài)變量注入方案,希望對大家有所幫助。

本文轉載自微信公眾號「愛寫B(tài)ug的麥洛」

 

責任編輯:姜華 來源: 愛寫B(tài)ug的麥洛
相關推薦

2024-04-26 00:25:52

Rust語法生命周期

2021-08-05 06:54:05

流程控制default

2019-07-24 15:30:00

SQL注入數(shù)據(jù)庫

2024-02-27 10:11:36

前端CSS@規(guī)則

2021-10-11 07:55:42

瀏覽器語法Webpack

2013-08-02 10:52:10

Android UI控件

2024-04-07 08:41:34

2024-08-26 10:01:50

2024-06-12 00:00:05

2010-08-25 01:59:00

2011-12-02 09:22:23

網絡管理NetQos

2024-02-23 08:14:01

項目開發(fā)Spring

2024-06-24 12:51:50

2013-10-16 14:18:02

工具圖像處理

2023-04-06 09:08:41

BPM流程引擎

2021-05-20 11:17:49

加密貨幣區(qū)塊鏈印度

2023-09-06 18:37:45

CSS選擇器符號

2020-02-21 08:45:45

PythonWeb開發(fā)框架

2020-10-19 06:43:53

Redis腳本原子

2023-04-03 08:30:54

項目源碼操作流程
點贊
收藏

51CTO技術棧公眾號