「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Spring Boot アプリケーションで Spring プロファイルを使用する方法

Spring Boot アプリケーションで Spring プロファイルを使用する方法

2024 年 8 月 6 日に公開
ブラウズ:515

How to Use Spring Profiles in Your Spring Boot Application

Spring プロファイルは、アプリケーション構成の一部を分離し、特定の環境でのみ使用できるようにする強力な方法を提供します。この機能は、コードを変更せずに開発、テスト、運用環境のさまざまな構成を処理する場合に特に役立ちます。

スプリングプロファイルとは何ですか?

Spring プロファイルを使用すると、アクティブなプロファイルに応じて Bean を条件付きで登録できます。これは、同じタイプの複数の Bean を定義し、特定の環境でどれをアクティブにするかを指定できることを意味します。

スプリングプロファイルのセットアップ

1. 設定ファイルの作成

Spring Boot は、構成に application-{profile}.properties または application-{profile}.yml ファイルのセットを使用します。これらのファイルにはプロファイル固有の構成が含まれており、アクティブなプロファイルに基づいてロードされます。

デフォルト設定 (application.yml)

spring:
  application:
    name: MySpringApp

server:
  port: 8080  # Default port

開発構成 (application-dev.yml)

spring:
  datasource:
    url: jdbc:h2:mem:devdb
    username: sa
    password: ""
    driver-class-name: org.h2.Driver
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true

server:
  port: 8081  # Development port

実稼働構成 (application-prod.yml)

spring:
  datasource:
    url: jdbc:mysql://prod-db-server:3306/proddb
    username: prod_user
    password: prod_password
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    hibernate:
      ddl-auto: validate
    show-sql: false

server:
  port: 8082  # Production port

Spring プロファイルのアクティブ化

2. コマンドライン経由でプロファイルをアクティブ化する

Spring Boot アプリケーションの実行時に --spring.profiles.active パラメーターを使用してプロファイルをアクティブ化できます。

java -jar my-spring-app.jar --spring.profiles.active=dev

3. アプリケーションのプロパティからプロファイルをアクティブ化する

代わりに、application.yml ファイルでアクティブなプロファイルを指定することもできます:

spring:
  profiles:
    active: dev  # or prod

4. 環境変数によるプロファイルのアクティブ化

環境変数を使用してアクティブなプロファイルを設定することもできます:

export SPRING_PROFILES_ACTIVE=dev

コードでのプロファイルの使用

Spring は、アクティブなプロファイルに基づいて Bean を条件付きで登録するための @Profile アノテーションを提供します。以下に例を示します:

構成クラスの例

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class AppConfig {

    @Bean
    @Profile("dev")
    public DataSource devDataSource() {
        return new HikariDataSource();  // Development-specific DataSource
    }

    @Bean
    @Profile("prod")
    public DataSource prodDataSource() {
        return new HikariDataSource();  // Production-specific DataSource
    }
}

この例では、devDataSource Bean は dev プロファイルがアクティブな場合にのみ作成され、prodDataSource Bean は prod プロファイルがアクティブな場合に作成されます。

プロファイル固有の Bean のテスト

テストを作成するとき、@ActiveProfiles アノテーションを使用してどのプロファイルをアクティブにするかを指定できます:

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.ActiveProfiles;

@SpringBootTest
@ActiveProfiles("dev")
public class DevProfileTests {

    @Autowired
    private DataSource dataSource;

    @Test
    public void testDataSource() {
        // Test code using the development DataSource
    }
}

プロファイル固有のプロパティ

アクティブなプロファイルに基づいて、さまざまなプロパティ ファイルをロードしたい場合があります。 @PropertySource アノテーションを使用してこれを実現できます:

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

@Configuration
@PropertySource("classpath:application-${spring.profiles.active}.properties")
public class PropertyConfig {
}

結論

Spring プロファイルは、さまざまな環境のさまざまな構成を管理するための堅牢かつ柔軟な方法です。プロファイルに基づいて構成プロパティと Bean を分離することにより、アプリケーションが開発、テスト、実稼働のいずれの環境でも正しく動作することを保証できます。この記事で説明した手法を使用すると、Spring Boot アプリケーションでプロファイルを簡単にセットアップおよび管理できます。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/isaactony/how-to-use-spring-profiles-in-your-spring-boot-application-o18?1 侵害がある場合は、study_golang@163 までご連絡ください。 .comを削除してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3