ホームページ  >  記事  >  Java  >  Spring Boot アプリケーションで Spring プロファイルを使用する方法

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

王林
王林オリジナル
2024-08-05 14:47:421303ブラウズ

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 アプリケーションでプロファイルを簡単にセットアップおよび管理できます。

以上がSpring Boot アプリケーションで Spring プロファイルを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。