日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

【Spring Boot】Spring Boot 配置文件詳解(application.yml、application-dev.yml、application-test.yml )

作者:CodeCharm——CC 更新時間: 2024-03-21 編程語言

一、application.yml 基礎(chǔ)配置

是 Spring Boot 中用于配置應(yīng)用程序?qū)傩缘闹饕渲梦募弧_@個文件通常用于配置應(yīng)用程序的一般性屬性,包括數(shù)據(jù)庫連接、日志級別、端口號等。下面是一些常見的在 application.yml 中配置的示例:

# 服務(wù)器端口
server:
  port: 8080

# 數(shù)據(jù)庫連接配置
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydatabase
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

# 日志級別
logging:
  level:
    root: INFO
    com.example.mypackage: DEBUG

# 應(yīng)用程序自定義屬性
myapp:
  name: My Spring Boot App
  version: 1.0

上述示例展示了一些常用的配置項,但根據(jù)應(yīng)用程序的需求,你可以在 application.yml 中配置各種屬性。Spring Boot 非常靈活,可以根據(jù)屬性的前綴識別屬性,并將其綁定到對應(yīng)的 Java 對象上,以方便在代碼中使用。

需要注意的是,application.yml 文件采用 YAML(YAML Ain’t Markup Language)語法,它使用縮進(jìn)和冒號來表示層次關(guān)系。因此,正確的縮進(jìn)對于保持文件的結(jié)構(gòu)是很重要的。

二、配置文件在項目中起到的具體作用

在 Spring Boot 中,可以通過屬性文件(比如 application.yml 或 application.properties)來配置應(yīng)用程序的屬性。這些屬性可以直接映射到 Java 對象中,從而在代碼中方便地使用

1、@ConfigurationProperties 注解

  • 提供了一種方便的方式,可以將配置文件中的屬性映射到 Java
    對象的字段上。這樣做的一個常見的方式是使用屬性的前綴來進(jìn)行匹配。以下是一個簡單的示例:

    # application.yml myapp:   database:
        url: jdbc:mysql://localhost:3306/mydatabase
        username: root
        password: password 
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component 
    @ConfigurationProperties(prefix = "myapp.database") public
    class DatabaseProperties {
        private String url;
        private String username;
        private String password;
    
        // Getters and setters
    
        // 可以在這里添加其他的業(yè)務(wù)邏輯 
    } 
    

    在這個例子中,DatabaseProperties 類的屬性(urlusernamepassword)會與
    application.yml 文件中 myapp.database 下的屬性相匹配。Spring Boot 會自動將這些屬性值注入到
    DatabaseProperties 實例中。

    然后,你可以在其他組件中注入 DatabaseProperties,并直接使用其中的屬性:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service public class DatabaseService {
        private final DatabaseProperties databaseProperties;
    
        @Autowired
        public DatabaseService(DatabaseProperties databaseProperties) {
            this.databaseProperties = databaseProperties;
        }
    
        public void connectToDatabase() {
            String url = databaseProperties.getUrl();
            String username = databaseProperties.getUsername();
            String password = databaseProperties.getPassword();
    
            // 連接到數(shù)據(jù)庫的邏輯...
        } 
    } 
    

    通過這種方式,你可以將配置文件中的屬性映射到 Java
    對象上,并在代碼中方便地使用這些屬性。這種配置方式可以幫助你集中管理應(yīng)用程序的配置,并提高代碼的可維護(hù)性。

2、@Value 注解

  • 使用 @Value 注解可以直接將配置文件中的屬性值注入到 Spring Bean 中的字段或方法參數(shù)上。
    @Value("${property.name}") private String
       propertyName;
    

3、Environment 對象

  • 通過 Environment 對象獲取配置屬性。

    @Autowired private Environment env;
       
    public void someMethod() {
       	String propertyValue = env.getProperty("property.name"); 
    }
    

4、 @PropertySource 注解引入外部屬性文件

  • 使用 @PropertySource 注解可以在配置類中引入外部的屬性文件。

    public class MyConfiguration {
        @Value("${custom.property}")
        private String customProperty;
    } 
    

5、@ConfigurationPropertiesScan 注解(Spring Boot 2.2+)

  • 這個注解允許在指定的包及其子包中掃描 @ConfigurationProperties 注解,無需顯式聲明
    @ConfigurationProperties 的 Bean。

    @ConfigurationPropertiesScan("com.example.config") 
    

這些方式都允許在應(yīng)用程序中方便地訪問配置文件中的屬性值,開發(fā)者可以根據(jù)具體情況選擇最適合的方式。

三、Spring Boot 的其他配置文件

在 Spring Boot 中,除了常見的 application.ymlapplication.properties 外,你還可以使用其他自定義的配置文件。Spring Boot 提供了以下幾種常見的配置文件:

1、application.properties/application.yml

  • 默認(rèn)的主配置文件,Spring Boot 應(yīng)用會自動加載該文件。存放應(yīng)用程序的主要配置。

2、application-{profile}.properties/application-{profile}.yml:

  • 可以根據(jù)不同的環(huán)境配置不同的屬性文件,{profile} 表示環(huán)境名稱。
    例如,application-dev.properties 用于開發(fā)環(huán)境,application-prod.properties
    用于生產(chǎn)環(huán)境。

3、bootstrap.properties/bootstrap.yml:

  • 用于 Spring Cloud 應(yīng)用,是 Spring Cloud Config 服務(wù)的默認(rèn)配置文件。
    存放一些啟動時需要優(yōu)先加載的配置,比如連接到 Config Server 的配置。

4、application-{profile}.properties/application-{profile}.yml:

  • 可以根據(jù)不同的環(huán)境配置不同的屬性文件,{profile} 表示環(huán)境名稱。 例如,application-dev.properties
    用于開發(fā)環(huán)境,application-prod.properties 用于生產(chǎn)環(huán)境。

5、application-{label}.properties/application-{label}.yml:

  • 用于 Git 和配置服務(wù)器的外部化配置,{label} 表示 Git 的標(biāo)簽。
    例如,application-v1.properties 用于版本 1。

這些文件命名規(guī)范允許你根據(jù)不同的環(huán)境、配置標(biāo)簽或者配置文件類型組織和管理你的配置信息。Spring Boot 會根據(jù)上述規(guī)則自動加載相應(yīng)的配置文件。

四、多配置文件使用哪個

Spring Boot 在啟動時會加載默認(rèn)的主配置文件,即 application.ymlapplication.properties。如果有不同環(huán)境的配置文件,如 application-test.ymlapplication-dev.yml,Spring Boot 會根據(jù)當(dāng)前激活的環(huán)境來選擇加載對應(yīng)的配置文件。

1、設(shè)置 spring.profiles.active 指定激活環(huán)境

你可以通過在 application.yml 或 application.properties 中設(shè)置 spring.profiles.active 屬性來指定激活的環(huán)境。例如:

spring:
  profiles:
    active: dev

上述配置表示激活 dev 環(huán)境,因此 Spring Boot 會加載 application-dev.yml 文件中的配置。

如果沒有設(shè)置 spring.profiles.active 屬性,Spring Boot 將默認(rèn)使用主配置文件的配置。

2、命令行參數(shù)指定環(huán)境

除了通過屬性文件來設(shè)置激活的環(huán)境外,你還可以通過命令行參數(shù)、系統(tǒng)屬性、環(huán)境變量等方式來指定激活的環(huán)境。例如,通過命令行參數(shù)啟動時指定環(huán)境:

java -jar your-application.jar --spring.profiles.active=dev

這樣就會加載 application-dev.yml 的配置。

五、Springboot中配置文件的加載順序

application.yml、application.properties和bootStrap.yml加載順序

以jar包發(fā)布springboot項目時
默認(rèn)會先使用jar包跟目錄下的application.properties來作為項目配置文件。

如果在不同的目錄中存在多個配置文件,它的讀取順序是:

1、config/application.properties(項目根目錄中config目錄下)
2、config/application.yml
3、application.properties(項目根目錄下)
4、application.yml
5、resources/config/application.properties(項目resources目錄中config目錄下)
6、resources/config/application.yml
7、resources/application.properties(項目的resources目錄下)
8、resources/application.yml

原文鏈接:https://blog.csdn.net/weixin_45188218/article/details/135283596

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新