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

一起聊聊 Spring Profiles 的小知識

開發(fā) 前端
本文講述了 Spring Profiles 的配置使用,和如果在啟動的時候,選擇特定的 profile 。也講述了一些使用過程中的一些小技巧,希望對你有幫助。

?大家好,我是指北君。

最近公司新來了一個實習生,挺上進的,天天追著我問問題。指北君開啟了帶實習生打怪升級之路。吶,今天問了一個關于 Spring Profiles 的問題。

實習生:指北君,你知道 Spring Profiles 嗎?

指北君:我知道啊,怎么了?有什么問題嗎?

實習生:那你可以跟我講講嘛,Spring Profiles到底是什么?有什么用?

指北君:好的,Profiles 是 Spring 框架的核心特性,它允許我們在不同的 profiles 條件下,對 Spring bean? 有不同的配置實現(xiàn)。比如說,我們在生產(chǎn)環(huán)節(jié)用 prod 標記,那我們的 spring bean 構造出來之后就使用了 prod 的配置項。所以我們只要在啟動的時候,設定好我們想要的 profile ,那我們就能獲得不同的結果。

實習生:那這個 Spring Profile 在項目里怎么使用的呢?

指北君:好,我找個項目給你看下。

話音剛落,指北君打開了 IDEA,一頓操作,找到了一個配置類。

@Component
@Profile("dev")
public class DevDatasourceConfig

指北君:看到了嗎?我們項目里這個數(shù)據(jù)源配置類上面有個 @Profile? 注解,里面寫了 dev 。就是說這個配置類在 profile=dev 的時候,才能生效。

實習生:那這個挺簡單的呀。

指北君:是的呀,使用起來很簡單的,哦對了,這里有個小技巧。如果我們只是不想在特定環(huán)境下配置某個配置類的話,也有很簡單的操作方式。

@Component
@Profile("!dev")
public class DevDatasourceConfig

你看出區(qū)別了嗎?

實習生:就是 dev 之前加了一個 ?。▏@號)。其他沒有變化。

指北君:是的,就是這樣,這也是一個常用的技巧。

實習生:代碼里雖然這樣配置好了,那項目啟動怎么知道啟用了哪一個配置項呢?

指北君:啟用哪一個配置,這邊有很多種方式可以實現(xiàn)。

1.我們在項目中的 application.properties 文件里直接進行配置即可

spring.profiles.active=dev

2.通過硬編碼實現(xiàn) WebApplicationInitializer 接口,配置 ServletContext 來激活配置

@Configuration
public class MyWebApplicationInitializer
implements WebApplicationInitializer {

@Override
public void onStartup(ServletContext servletContext) throws ServletException {

servletContext.setInitParameter(
"spring.profiles.active", "dev");
}
}

3.直接在 ConfigurableEnvironment 中實現(xiàn)設置,使用 spring boot 的朋友應該都知道,系統(tǒng)所有的配置項都是來自于 ConfigurableEnvironment 。

@Autowired
private ConfigurableEnvironment env;
...
env.setActiveProfiles("dev");

4.命令行JVM啟動參數(shù)

-Dspring.profiles.active=dev

5.通過 export 環(huán)境變量來實現(xiàn)

export spring_profiles_active=dev

嗯, 學會了這幾種方法,你已經(jīng)可以在絕大部分場景下,游刃有余地使用 profile 了。

實習生:那我還有個問題,既然這樣配置的話,那我項目里有多個profile, 萬一我手抖,沒有用你說的這幾種配置好呢?那會怎么樣?

指北君:這個你放心,spring boot 有兜底方法,你想啊,你在一些項目沒有用到 profile 的時候,spring boot 是怎么啟動的呢?spring boot 項目會自動使用默認配置

spring.profiles.default=none

也就是說,spring boot 啟動了,但是沒有加載任何被@Profile 等標記的配置類。只會加載沒有被標記的配置類。

實習生:懂了,我看我們項目里,有很多類似 @Profile("db") @Profile("mysql") 之類的,那像這種多個的怎么使用的?

指北君:是的,我們項目中,不同的模塊都分開配置了, 我給你舉個例子怎么使用的。

-Dspring.profiles.active=dev,db,mysql

就像這樣,直接逗號分割,拼接上去就行了。

實習生:那這樣好像比較麻煩啊,萬一搞漏掉了就給自己挖坑了。

指北君:對的,這就是要仔細了,以前一直要靠自己的?,F(xiàn)在就不會有這個問題了,spring boot 團隊也意識到這個問題了,在 Spring boot 2.4 開始已經(jīng)支持分組了。

spring.profiles.group.production[0]=proddb
spring.profiles.group.production[1]=prodmq

我們平時啟動的時候只要指定 spring.profiles.active=production? 就行了, prodb 和 prodmq 同樣就能成功配置進來。Spring Profiles 的相關內(nèi)容差不多都講完了,你還有什么疑問嗎?

實習生:現(xiàn)在基本沒有了,等我遇到再來找你這大佬。

指北君:隨時歡迎,現(xiàn)在是我在帶你,不要給我丟臉就行。哈哈哈。

總結

本文講述了 Spring Profiles 的配置使用,和如果在啟動的時候,選擇特定的 profile 。也講述了一些使用過程中的一些小技巧,希望對你有幫助。

責任編輯:武曉燕 來源: Java技術指北
相關推薦

2023-05-09 07:51:28

Spring循環(huán)依賴

2023-11-13 18:36:04

知識抽取NER

2023-04-26 07:30:00

promptUI非結構化

2022-10-08 00:00:05

SQL機制結構

2024-07-29 08:24:43

2022-12-07 09:01:14

布局容器VStack?

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡編程通信

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開發(fā)模式

2023-09-21 08:16:56

JDK 21向量計算計算

2023-03-07 07:05:29

生產(chǎn)數(shù)據(jù)庫運維

2021-07-31 11:40:55

Openresty開源

2022-09-08 08:50:17

SSDOracleCPU

2024-06-14 09:32:12

2022-12-06 08:12:11

Java關鍵字
點贊
收藏

51CTO技術棧公眾號