偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

開發(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)變量注入方案,希望對大家有所幫助。

本文轉(zhuǎn)載自微信公眾號「愛寫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

2024-08-26 10:01:50

2024-04-07 08:41:34

2013-08-02 10:52:10

Android UI控件

2024-06-12 00:00:05

2011-12-02 09:22:23

網(wǎng)絡管理NetQos

2010-08-25 01:59:00

2013-10-16 14:18:02

工具圖像處理

2023-04-06 09:08:41

BPM流程引擎

2024-02-23 08:14:01

項目開發(fā)Spring

2024-06-24 12:51:50

2020-10-19 06:43:53

Redis腳本原子

2023-04-03 08:30:54

項目源碼操作流程

2009-04-02 10:17:00

交換機產(chǎn)品選購

2023-09-26 00:29:40

CSS布局標簽

2020-02-21 08:45:45

PythonWeb開發(fā)框架
點贊
收藏

51CTO技術棧公眾號