springboot配置文件加載,springboot 入門二- 讀取配置信息一

 2023-10-06 阅读 33 评论 0

摘要:在上篇入門中簡單介紹下springboot啟動使用了大量的默認配置,在實際開發過程中,經常需要啟動多個服務,那端口如何手動修改呢? 此篇就是簡單介紹相關的配置文件信息。 Spring Boot允許外部化你的配置,這樣你就可以在不同的環境中使用相同的

在上篇入門中簡單介紹下springboot啟動使用了大量的默認配置,在實際開發過程中,經常需要啟動多個服務,那端口如何手動修改呢? 此篇就是簡單介紹相關的配置文件信息。

Spring Boot允許外部化你的配置,這樣你就可以在不同的環境中使用相同的應用程序代碼。你可以使用屬性文件、YAML文件、環境變量和命令行參數來外部化配置。屬性的值獲取可以通過注解@Value 、 spring Environment或注解@ConfigurationProperties

這些方式優先級如下:

  1. @TestPropertySource? / @SpringBootTest#properties? 注解用于測試中。
  2. 命令行參數(參數使用--xxx=yyy方式來傳遞)  
    1. -》 SPRING_APPLICATION_JSON='{"foo":{"bar":"spam"}}' java -jar myapp.jar?
    2. -》 java -jar myapp.jar --spring.application.json='{"foo":"bar"}'
    3. -》java -jar myapp.jar --foo=bar  --server.port=9090
  3. ServletConfig 初始化參數
  4. ServletContext 初始化參數
  5. 來自java:comp/env的JNDI屬性
  6. Java系統屬性(System.getProperties()
  7. 操作系統環境變量
  8. RandomValuePropertySource配置的random.*屬性值
    1. my.number=${random.int}
      my.bignumber=${random.long}
      my.uuid=${random.uuid}
      my.number.less.than.ten=${random.int(10)}
      my.number.in.range=${random.int[1024,65536]}
  9. jar包外部的application-{profile}.propertiesapplication.yml(帶spring.profile)配置文件
  10. jar包內部的application-{profile}.propertiesapplication.yml(帶spring.profile)配置文件
  11. jar包外部的application.propertiesapplication.yml(不帶spring.profile)配置文件
  12. jar包內部的application.propertiesapplication.yml(不帶spring.profile)配置文件
  13. @Configuration注解類上的@PropertySource
  14. 通過SpringApplication.setDefaultProperties指定的默認屬性

?以上只是springboot提供的方式,在日常工作中最常用的就是*.properties 、 *.yml

一、屬性文件配置路徑

springboot配置文件加載,SpringApplication將加載application.properties,并將它們添加到Spring環境,可以從以下路徑加載(優先級):

1、當前項目的/config子目錄

2、當前目錄

3、classpath的下的/config

4、類的classpath 根目錄

注意:

java獲取配置文件內容,yml是一個類似展示樹狀結構層次,比較方便查閱。但它需要比較嚴格的寫法要求:屬性名的值和冒號中間必須有空格,如name: Isea533正確,name:Isea533就是錯的;不能使用tab鍵。

/config優先于classpath根目錄、 *.properties 優先 *.yml

?

二、profile屬性文件

在應用程序中有很多配置項,例如數據庫連接地址、日志文件位置、應用服務器配置等等。為了安全與靈活性,推薦將配置文件放在生產環境的服務器上,并嚴格控制訪問權限。在運行應用時可以通過參數指定配置文件。

springboot提供規則的命名文件讀取來區分環境:application-{profile}.properties

spring boot教程。默認的文件是application-default.properties

設定測試環境:application-test.properties

只需要在主application.properties加上配置

spring.profiles.active=test

就讀取測試環境配置屬性。

?

springboot讀取本地文件,三、屬性占位符

例如:

app.name=MyApp
app.description=${app.name} is a Spring Boot application

可以在配置文件中引用前面配置過的屬性(優先級前面配置過的這里都能用)。

通過如${app.name:默認名稱}方法還可以設置默認值,當找不到引用的屬性時,會使用默認的屬性。

由于${}方式會被Maven處理。如果你pom繼承的spring-boot-starter-parent,Spring Boot 已經將maven-resources-plugins默認的${}方式改為了@ @方式,例如@name@


java讀取配置文件、四、屬性名稱匹配規則

例如有如下配置對象:

@Component
@ConfigurationProperties(prefix="person")
public class ConnectionSettings {private String firstName;
}

firstName可以使用的屬性名如下:

  1. person.firstName,標準的駝峰式命名
  2. person.first-name,虛線(-)分割方式,推薦在.properties.yml配置文件中使用
  3. PERSON_FIRST_NAME,大寫下劃線形式,建議在系統環境變量中使用

?

五、其它默認配置查看及修改

要調整自己使用的配置,首先要了解springboot maven 引導層級關系

springboot解析配置文件,

spring-boot-autoconfigure.jar? 此為自動加載各種配置的。

tomcat服務相關配置: org.springframework.boot.autoconfigure.web.ServerProperties

spring.mvc的配置:org.springframework.boot.autoconfigure.web.WebMvcProperties

?

其它web相關配置都在web目錄下相對應的類中。

springboot讀取文件內容,轉載于:https://www.cnblogs.com/song27/p/7513893.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/119297.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息