最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot配置文件、多環(huán)境配置、讀取配置的4種實現(xiàn)方式

 更新時間:2024年09月23日 15:48:29   作者:夏詩曼CharmaineXia  
SpringBoot支持多種配置文件位置和格式,其中application.properties和application.yml是默認加載的文件,配置文件可以根據環(huán)境通過spring.profiles.active屬性進行區(qū)分,命令行參數(shù)具有最高優(yōu)先級,可覆蓋其他所有配置

一、寫配置文件的位置

springboot官方規(guī)定了四個寫配置文件的位置,位置如下:

  • file指項目文件夾
  • classpath指打包后生成的的target文件夾

讀取的優(yōu)先級

優(yōu)先級高會覆蓋優(yōu)先級低的相同配置,不同配置會互補。

1.文件位置:

如果這四個位置都有配置文件,會按照下圖的優(yōu)先級讀取。

2.文件名和文件后綴:

Spring Boot默認會加載application.properties或application.yml文件,properties后綴的優(yōu)先級更高。

application.properties > application.ym

3.配置文件中的profile-specific文件:

可以根據激活的profile,如dev、prod等,在配置文件名后使用-{profile}來命名,這些profile-specific的配置文件將覆蓋通用的配置文件中的相同屬性。

例如:

  • application-dev.properties  
  • application-prod.yml

4.命令行參數(shù)例如:application-dev.properties   application-prod.yml

最后,在啟動jar包或war包時,可以指定參數(shù)值,命令行參數(shù)中指定的屬性會覆蓋之前加載的所有屬性。

# 設置環(huán)境變量
ENV SPRING_NACOS_SERVERADDRESS='nacos.xxx.xxx:8848'
ENV SPRING_NACOS_NAMESPACE='merit-test'

# 啟動jar包命令
java -Xms228m -Xmx228m -Dspring.cloud.nacos.config.server-addr=${SPRING_NACOS_SERVERADDRESS} -Dspring.cloud.nacos.config.namespace=${SPRING_NACOS_NAMESPACE} -Dspring.cloud.nacos.config.username=merit -Dspring.cloud.nacos.config.password=merit -Dspring.cloud.nacos.discovery.server-addr=${SPRING_NACOS_SERVERADDRESS} -Dspring.cloud.nacos.discovery.namespace=${SPRING_NACOS_NAMESPACE} -Dspring.cloud.nacos.discovery.username=merit -Dspring.cloud.nacos.discovery.password=merit -jar /home/admin/merit-backend/merit-appraise-*.jar

二、多環(huán)境配置

開發(fā)、測試、生產… ,多個環(huán)境下,如何指定不同環(huán)境的配置文件,使用spring.profiles.active屬性

1. properties

2. yaml

三、yaml配置文件

yaml支持多種數(shù)據結構,還支持表達式,但是對格式要求嚴格

  • 大小寫敏感
  • 使用縮進表示層級關系
  • 縮進時不允許使用Tab鍵,只允許使用空格。
  • 縮進的空格數(shù)目不重要,只要相同層級的元素左側對齊即可

1.字符串(String):表示文本數(shù)據,可以使用單引號或雙引號括起來。

name: ginjiang

# 如果字符串之中包含空格或特殊字符,需要放在引號之中
str: '內容: 字符串'

# 單引號之中如果還有單引號,必須連續(xù)使用兩個單引號轉義
str: 'labor''s day' 

# 多行字符串:允許在YAML中表示跨越多行的字符串,使用管道符(|)或大于符號(>)進行標識
description: |
  This is a multiline
  string in YAML.

2.數(shù)字(Number):表示數(shù)值數(shù)據,可以是整數(shù)或浮點數(shù)。

age: 25
pi: 3.14159

3.布爾值(Boolean):表示邏輯值,可以是true或false。

isStudent: true
hasCar: false

4.列表(List):表示有序的數(shù)據集合,使用短橫線(-)作為標記,可以包含不同類型的數(shù)據。

pets:
  - cat
  - dog
  - pig
  
#行內寫法  
pets: [cat,dog,pig]

5.字典(Dictionary)/映射(Mapping)/對象(Object):表示鍵值對的集合,使用冒號(:)分隔鍵和值。

student:
    name: qinjiang
    age: 3
 
#行內寫法
student: {name:qinjiang,age:3}

6.字典和列表嵌套

employees:
  - name: John
    age: 25
  - name: Alice
    age: 30

7.空值(Null):表示空數(shù)據,使用null或~表示。

address: null

8.時間(Time):表示時間數(shù)據,使用ISO 8601格式表示。

timestamp: 2023-05-25T10:30:00Z

9.表達式

#自動生成uuid
name: ${random.uuid}

#自動生成隨機數(shù)
name: ${random.int}

#占位符:student.name有值就用student.name的值,沒有就用“小王”
name: ${student.name:小王}

10.特殊值(Special Values):YAML支持一些特殊的值,如無窮大(Infinity)、負無窮大(Negative Infinity)、非數(shù)字(NaN)等。

special_values:
  - infinity: .inf
  - negative_infinity: -.inf
  - not_a_number: .nan

11.引用(References):YAML允許使用引用來引用其他節(jié)點的值,使用&符號定義引用,使用*符號引用引用的值。

person: &ref
  name: John
  age: 25

employee:
  details: *ref

yaml、properties、xml對比

特點YAMLPropertiesXML
語法結構使用縮進和冒號(:)表示層級關系使用等號(=)或冒號(:)表示鍵值對使用標簽和元素表示層級關系
數(shù)據類型支持多種數(shù)據類型,如字符串、數(shù)字、布爾值等鍵值對不直接支持數(shù)據類型,通過標簽定義
可讀性
擴展性支持擴展自定義數(shù)據類型和對象結構不支持支持自定義標簽和元素結構
嵌套支持支持不支持支持
適用場景配置文件、數(shù)據序列化和交換格式簡單配置文件和屬性管理復雜數(shù)據交換和配置文件

四、讀取配置文件

1. @ConfigurationProperties(prefix=“key”)

  

配置文件的值自動注入到實體中。  

通過在類上使用@ConfigurationProperties注解,并指定前綴,可以將配置文件中以該前綴開頭的屬性值綁定到對應的類的屬性上。

2. @Value(“${key}”)

給每個屬性單獨賦值。

@Configuration
public class Student{
    @Value("${person.name}")
    private String name;
}

3. Environment對象

通過注入Environment對象,使用getProperty方法獲取配置文件中的屬性值。

@Component
public class MyComponent {
    @Autowired
    private Environment environment;

    public void someMethod() {
        String name = environment.getProperty("person.name");
    }
}

4. @PropertySource(value=“classpath:配置文件名”)

  

指定加載配置文件。  

使用@Configuration注解和@PropertySource注解:在配置類上使用@Configuration注解,并使用@PropertySource注解指定配置文件的位置。接著使用@Value注解或Environment對象來獲取屬性值。

@Configuration
@PropertySource("classpath:my.properties")
public class Student{
    @Value("${person.name}")
    private String name;
}

五、JSR303—參數(shù)驗證

@Validated 是 Spring Framework 中的一個注解,它用于在方法參數(shù)、方法返回值或類級別上啟用方法參數(shù)驗證(Method Parameter Validation)。

它基于 JSR-303(Bean Validation)規(guī)范,提供了一種方便的方式來對方法參數(shù)進行驗證。

常用的驗證注解

  • @NotNull:驗證參數(shù)值不為 null。
  • @NotBlank:驗證字符串參數(shù)不為空(不為 null、不為空字符串、不包含空格)。
  • @NotEmpty:驗證集合或數(shù)組參數(shù)不為空。
  • @Min(value):驗證數(shù)字參數(shù)的最小值。
  • @Max(value):驗證數(shù)字參數(shù)的最大值。
  • @Size(min, max):驗證字符串、集合或數(shù)組參數(shù)的長度或大小是否在指定范圍內。
  • @Pattern(regex):驗證字符串參數(shù)是否匹配指定的正則表達式。
  • @Email:驗證字符串參數(shù)是否為有效的電子郵件地址。
  • @Valid:遞歸驗證嵌套對象或集合的元素。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Mybatis-Plus可能導致死鎖的問題分析及解決辦法

    Mybatis-Plus可能導致死鎖的問題分析及解決辦法

    這篇文章給大家主要介紹了Mybatis-Plus可能導致死鎖的問題分析及解決辦法,文中通過代碼示例給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下
    2023-12-12
  • JAVA實現(xiàn)JSON后端向前端傳遞數(shù)據

    JAVA實現(xiàn)JSON后端向前端傳遞數(shù)據

    本篇文章主要介紹了JAVA實現(xiàn)JSON后端向前端傳遞數(shù)據,這里整理了詳細的代碼,具有一定的參考價值,有需要的小伙伴可以參考下。
    2017-03-03
  • SpringBoot自定義注解的5個實戰(zhàn)案例分享

    SpringBoot自定義注解的5個實戰(zhàn)案例分享

    自定義注解是一種強大的元編程工具,允許在不修改原有代碼邏輯的情況下,為程序添加額外的功能,本文將分析5個常見的案例,希望對大家有所幫助
    2025-09-09
  • Java中this關鍵字的4種用法詳解(附常見面試題)

    Java中this關鍵字的4種用法詳解(附常見面試題)

    在Java的編程世界里,this關鍵字宛如一把神奇的鑰匙,看似簡單,卻蘊含著強大的功能,這篇文章主要介紹了Java中this關鍵字的4種用法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-06-06
  • mybatis模糊查詢like語句該如何寫

    mybatis模糊查詢like語句該如何寫

    MyBatis模糊查詢通常使用LIKE關鍵字,結合concat函數(shù)拼接通配符%實現(xiàn),在MyBatis配置文件中,通過#{keyword}傳遞參數(shù),生成帶有通配符的查詢語句,MyBatis-Plus中,通過LambdaQueryWrapper類和like方法構建模糊查詢條件,簡化查詢操作
    2024-09-09
  • MyBatis-Plus UpdateWrapper 使用常見陷阱和解決方案

    MyBatis-Plus UpdateWrapper 使用常見陷阱和解決方案

    MyBatis-Plus是Mybatis的一個增強,簡化了Mybatis的開發(fā)過程,不僅保持了Mybatis原有的功能,而且在無代碼侵略下增加了許多的增強的功能,提供了豐富的CRUD操作,單表的CRUD操作無需編寫SQL語句,本文介紹的是UpdateWrapper的常見陷阱和對應的解決方案,感興趣的朋友一起看看吧
    2024-08-08
  • Spring SseEmitter推送消息及常用方法

    Spring SseEmitter推送消息及常用方法

    SseEmitter 是 Spring Framework 提供的用于支持 Server-Sent Events(SSE)的類,它允許服務器端向客戶端推送事件流,實現(xiàn)服務器到客戶端的單向通信,這篇文章主要介紹了Spring SseEmitter推送消息,需要的朋友可以參考下
    2024-07-07
  • Java使用PostgreSQL存儲檢索節(jié)氣與季節(jié)的相關數(shù)據

    Java使用PostgreSQL存儲檢索節(jié)氣與季節(jié)的相關數(shù)據

    這篇文章主要介紹了Java使用PostgreSQL存儲檢索節(jié)氣與季節(jié)的相關數(shù)據,在眾多檢索領域中,對自然現(xiàn)象的檢索,如節(jié)氣與季節(jié)的檢索,雖然看似簡單,卻蘊含著豐富的文化內涵和實用價值,需要的朋友可以參考下
    2025-10-10
  • Spring Boot利用Java Mail實現(xiàn)郵件發(fā)送

    Spring Boot利用Java Mail實現(xiàn)郵件發(fā)送

    這篇文章主要為大家詳細介紹了Spring Boot利用Java Mail實現(xiàn)郵件發(fā)送,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Java日常練習題,每天進步一點點(62)

    Java日常練習題,每天進步一點點(62)

    下面小編就為大家?guī)硪黄狫ava基礎的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08

最新評論

黑河市| 贵定县| 静乐县| 施秉县| 大埔区| 页游| 乌拉特中旗| 遂川县| 三原县| 恩施市| 宁远县| 珠海市| 巴彦县| 昌图县| 定远县| 裕民县| 曲靖市| 鹤壁市| 皋兰县| 岳阳市| 阳高县| 凤凰县| 旅游| 伊川县| 呼图壁县| 德安县| 巴彦淖尔市| 石林| 珲春市| 信阳市| 武隆县| 屏东县| 陈巴尔虎旗| 新昌县| 尚志市| 漳州市| 常德市| 稻城县| 长寿区| 儋州市| 德安县|