iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
Mobile Development

Spring Boot+Android 30天 實戰開發 系列 第 6

【Day - 06】深入認識 Spring Boot 配置文件(上)

  • 分享至 

  • xImage
  •  

1. 引言

1.1 作用和重要性

配置文件在應用程式開發中扮演著至關重要的角色。它們為開發者提供了一種強大的方式,以不需要修改源程式碼的情況下,調整應用程式的行為,以適應不同的環境和需求。配置文件是應用程式的靈活性和可維護性的基礎,它們使得應用程式的配置與邏輯程式碼分離,使得配置更加透明和可管理。

考慮以下情景:您正在開發一個Web應用程式,並且您的應用程式需要與兩個不同的數據庫進行交互 - 一個用於開發和測試,另一個用於生產。如果沒有配置文件,您可能需要在程式碼中多次切換數據庫連接信息,這可能導致錯誤和混淆。

通過配置文件,您可以輕鬆地將這些連接信息分開存儲,一個用於開發環境,一個用於生產環境。這使得切換環境變得簡單,並且降低了出錯的風險。配置文件不僅用於存儲數據庫連接信息,還可用於存儲各種配置選項,例如應用程式的連接埠號、日誌級別、緩存策略等等。

1.2 "約定大於配置"的理念

Spring Boot秉承了"約定大於配置"的理念。這意味著Spring Boot提供了一套默認的配置和自動配置選項,以盡量減少開發人員需要手動配置的工作,從而提高了開發效率。這不僅包括了Spring Boot內部的組件,還包括了許多常用的第三方庫,這些庫可以被Spring Boot自動配置並集成到您的應用程式中。

這種理念的好處在於,它使得開發人員可以專注於編寫應用程式的業務邏輯,而不必花費大量時間來配置各種框架和組件。但是,當需要對特定行為進行配置時,Spring Boot提供了靈活的配置機制,可以滿足各種需求。

1.3 本文內容概述

本文將探討Spring Boot中的配置文件和屬性管理,重點包括:

  • 常見配置文件類型application.propertiesapplication.yml,及其使用場景。
  • 基本配置:如何設置應用程式的基本屬性,並將屬性值注入Spring Bean。
  • 多環境配置:如何根據不同環境設置不同的配置,以確保應用程式在各環境下正常運行。
  • 外部配置:外部配置文件的使用場景,包括通過命令行參數或環境變量傳遞配置。
  • 屬性優先級:解釋屬性在不同配置來源中的優先級順序,以及處理相同屬性衝突的方法。

通過掌握這些配置技巧,您將能夠更好地管理和調整您的Spring Boot應用程式,使其在不同場景下表現出色。接下來,我們將深入探討不同類型的配置檔。

2.常見的配置文件類型

在Spring Boot中,有兩種常見的配置文件類型application.propertiesapplication.yml。它們都用於儲存應用程式的配置資訊,但在語法和結構上有所不同。讓我們深入了解這兩種類型的配置文件。

2.1 application.properties

application.properties是基於鍵值對的配置文件,每一行都包含一個屬性的鍵和對應的值。這種格式簡單明了,適合儲存小型配置資訊。例如:

server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

2.2 application.yml

application.yml採用了更加結構化的格式,使用縮排和冒號表示層次關係。這種格式使得配置文件更加易讀和易管理,適用於複雜的配置場景。例如:

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret

2.3 區別和適用場景

  • 語法風格:application.properties使用簡單的鍵值對格式,而application.yml則採用縮排結構。
  • 易讀性:application.yml更具可讀性,尤其在處理多層次的配置時。
  • 複雜配置:對於複雜的配置情況,application.yml更易於管理和維護。
  • 屬性引用:application.yml支援屬性引用,可以在配置中引用其他屬性的值。

總的來說,您可以根據配置的複雜度和可讀性需求,選擇使用application.propertiesapplication.yml。Spring Boot會自動識別和載入這兩種類型的配置文件,並將其中的屬性值注入到應用程式中。接下來,我們將學習如何在這些配置文件中設定基本屬性。

3. 基本配置

在Spring Boot中,配置基本屬性是一項關鍵任務,它涵蓋了應用程式的基本設置,例如應用程式名稱、連接埠等。本節將介紹如何進行基本配置,包括兩種主要方法:使用application配置文件和使用注解 @Value 以及 @ConfigurationProperties

3.1 使用 application 配置文件的方式

配置基本屬性的一種方法是使用 application.propertiesapplication.yml 配置文件。這些文件位於專案的 resources 目錄下,Spring Boot 會自動識別和加載它們。以下是示例配置,設置的屬性都是一樣的,只是類型不一樣:

  • application.properties
     # 配置應用程式名稱
     spring.application.name=my-app
    
     # 配置連接埠
     server.port=8080
    
     # 自定義屬性
     mydata.author=ianliu
    
  • application.yml
     # 配置應用程式名稱
     spring:
         application:
             name: my-app
    
     # 配置連接埠
     server:
         port: 8080
    
     # 自定義屬性
     mydata:
        author: ianliu 
    

3.2 使用 @Value 注解

另一種配置屬性的方式是使用 @Value 注解,將配置文件中的屬性值注入到 Spring Bean 中。這種方式適用於將屬性值注入到普通的 Bean 屬性中,示例如下:

@Service
public class MyService {

    @Value("${spring.application.name}")
    private String appName;

    @Value("${server.port}")
    private int serverPort;

    @Value("${mydata.name}")
    private String name;
    // 省略其他程式碼
}

在上述示例中,@Value注解用於將配置文件(application.yml)中的spring.application.nameserver.port和自定義mydata.author屬性值注入到appNameserverPort字段中。

3.3. 使用@ConfigurationProperties

@ConfigurationProperties注解是另一種配置屬性的強大方法,它允許將屬性映射到 Java 物件中。首先,您需要創建一個 POJO 類,將屬性定義在這個類中,然後使用@ConfigurationProperties注解將屬性值映射到這個類。示例如下:

@Configuration
@ConfigurationProperties(prefix = "my-app")
public class MyAppProperties {

    private String appName;
    private int serverPort;

    // 省略getter和setter方法
}

接下來,將my-app.appNamemy-app.serverPort配置屬性值添加到application.propertiesapplication.yml文件中:

  • application.yml示例:
    # 配置應用程式名稱
    my-app:
      appName: my-app
    
    # 配置連接埠
    my-app:
      serverPort: 8080
    

使用@ConfigurationProperties的好處在於,它可以將屬性值映射到一個 Java 物件中,便於管理和使用。

通過這些方法,您可以輕鬆進行基本屬性的配置,並在應用程式中使用這些屬性。

4. 多環境配置

在軟體開發中,通常需要在不同的環境中運行應用程式,如開發、測試和生產環境。每個環境可能需要不同的配置資訊,以滿足特定的需求。Spring Boot提供了多種方法來實現多環境配置,以確保應用程式在不同環境下的正確運行。

4.1 使用不同配置檔案

一種常見的方法是為每個環境創建不同的配置檔案。例如,我們可以創建以下配置檔案:

  • application-dev.yml:用於開發環境的配置。
  • application-test.yml:用於測試環境的配置。
  • application-prod.yml:用於生產環境的配置。

然後,通過設定spring.profiles.activ‵屬性,來指定要啟動的配置檔。例如,在application.yml中設定:

spring:
    profiles:
        active: dev

這將啟動application-dev.yml中的配置。

補充

如果有其他環境請使用application-{你其他的環境名稱}.yml這樣的格式來命名,否則無法透過"spring.profiles.active"啟動該環境的配置檔。


上一篇
【Day - 05】Spring Boot中常用的參數傳遞方式(下)
下一篇
【Day - 07】深入認識 Spring Boot 配置文件(下)
系列文
Spring Boot+Android 30天 實戰開發 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言