2026年5月25日月曜日

SpringBoot で application.properties の設定を共通化する

SpringBoot で application.properties の設定を共通化する

概要

application.properties に共通設定を記載し application-dev.properties や application-prd.properties に差分の設定を記載します

環境

  • macOS 26.4.1
  • openjdk 26.0.1
  • SpringBoot 4.0.6
  • gradle 9.5.1
  • VSCode 1.121.0
  • MySQL 9.6.0

application.properties

ここに共通設定を記載します

spring.application.name=demo
# update はアプリケーション起動時に、Entityに対応するテーブルがなければ作成します
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydatabase
spring.datasource.username=ENC(bFMupckSRHJ/9QmXd1EVTw==)
spring.datasource.password=ENC(j64PBY1HLuuLo6Qoxo2xUg==)

# Jasypt 暗号化キーの設定(環境変数から取得)
jasypt.encryptor.algorithm=PBEWithMD5AndDES
jasypt.encryptor.iv-generator-classname=org.jasypt.iv.NoIvGenerator
jasypt.encryptor.password=${JASYPT_PASSWORD:default_password}

application-dev.properties

あとは各環境ごとの設定ファイルに差分や上書き設定を記載します

# Dev profile only: datasource URL override
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydatabase_dev

application-prd.properties

# Prd profile only: datasource URL override
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/mydatabase

実行

  • ./gradlew bootRun --args='--spring.profiles.active=dev'
  • ./gradlew bootRun --args='--spring.profiles.active=prd'

application.yaml ならまとめて記載もできる

  • vim application.yaml
spring:
  config:
    import:
      - classpath:application-common.yaml

---
spring:
  config:
    activate:
      on-profile: dev
    import:
      - classpath:application-dev.yaml

---
spring:
  config:
    activate:
      on-profile: prod
    import:
      - classpath:application-prod.yaml

で application-common.yaml に共通部分を記載しそれぞれの設定を application-dev.yaml/application-prd.yaml に記載すれば OK です

最後に

設定項目が増えた場合はファイルを分割しましょう
さらに共通設定が増えた場合は共通設定ファイルを作成し差分だけを各環境ごとに管理するようにしましょう

0 件のコメント:

コメントを投稿