Spring プロファイルは、アプリケーション構成の一部を分離し、特定の環境でのみ使用できるようにする強力な方法を提供します。この機能は、コードを変更せずに開発、テスト、運用環境のさまざまな構成を処理する場合に特に役立ちます。
Spring プロファイルを使用すると、アクティブなプロファイルに応じて Bean を条件付きで登録できます。これは、同じタイプの複数の Bean を定義し、特定の環境でどれをアクティブにするかを指定できることを意味します。
Spring Boot は、構成に application-{profile}.properties または application-{profile}.yml ファイルのセットを使用します。これらのファイルにはプロファイル固有の構成が含まれており、アクティブなプロファイルに基づいてロードされます。
spring: application: name: MySpringApp server: port: 8080 # Default port
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
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 Boot アプリケーションの実行時に --spring.profiles.active パラメーターを使用してプロファイルをアクティブ化できます。
java -jar my-spring-app.jar --spring.profiles.active=dev
代わりに、application.yml ファイルでアクティブなプロファイルを指定することもできます:
spring: profiles: active: dev # or prod
環境変数を使用してアクティブなプロファイルを設定することもできます:
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 プロファイルがアクティブな場合に作成されます。
テストを作成するとき、@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 アプリケーションでプロファイルを簡単にセットアップおよび管理できます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3