Spring-boot-application-properties

提供:Dev Guides
移動先:案内検索

Spring Boot-アプリケーションのプロパティ

アプリケーションプロパティは、さまざまな環境での作業をサポートします。 この章では、Spring Bootアプリケーションのプロパティを設定および指定する方法を学習します。

コマンドラインのプロパティ

Spring Bootアプリケーションは、コマンドラインプロパティをSpring Boot Environmentプロパティに変換します。 コマンドラインプロパティは、他のプロパティソースよりも優先されます。 デフォルトでは、Spring Bootは8080ポート番号を使用してTomcatを起動します。 コマンドラインプロパティを使用してポート番号を変更する方法を学びましょう。

ステップ1 *-実行可能なJARファイルを作成した後、コマンド *java –jar <JARFILE> を使用して実行します。

  • ステップ2 *-コマンドラインプロパティを使用して、Spring Bootアプリケーションのポート番号を変更するには、以下のスクリーンショットに示されているコマンドを使用します。

コマンドラインプロパティJARFILE

-区切り文字-を使用して、複数のアプリケーションプロパティを指定できます。

プロパティファイル

プロパティファイルは、1つのファイルに「N」個のプロパティを保持して、異なる環境でアプリケーションを実行するために使用されます。 Spring Bootでは、プロパティはクラスパスの下の application.properties ファイルに保持されます。

application.propertiesファイルは、 src/main/resources ディレクトリにあります。 サンプル application.properties ファイルのコードは以下のとおりです-

server.port = 9090
spring.application.name = demoservice

上記のコードでは、Spring Bootアプリケーションのデモサービスがポート9090で開始されることに注意してください。

YAMLファイル

Spring Bootは、アプリケーションを実行するためのYAMLベースのプロパティ設定をサポートしています。 application.properties の代わりに、 application.yml ファイルを使用できます。 このYAMLファイルもクラスパス内に保持する必要があります。 サンプル application.yml ファイルは以下のとおりです-

spring:
   application:
      name: demoservice
   server:
port: 9090

外部化されたプロパティ

プロパティファイルをクラスパスの下に保持する代わりに、プロパティを別の場所またはパスに保持できます。 JARファイルの実行中に、プロパティファイルのパスを指定できます。 次のコマンドを使用して、JARの実行中にプロパティファイルの場所を指定できます-

-Dspring.config.location = C:\application.properties

外部化されたプロパティ

@Valueアノテーションの使用

@Valueアノテーションは、Javaコードで環境またはアプリケーションのプロパティ値を読み取るために使用されます。 プロパティ値を読み取るための構文は以下に示されています-

@Value("${property_key_name}")

@Valueアノテーションを使用してJava変数の spring.application.name プロパティ値を読み取る構文を示す次の例を見てください。

@Value("${spring.application.name}")

理解を深めるために、以下のコードを観察してください-

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {
   @Value("${spring.application.name}")
   private String name;
   public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
   }
   @RequestMapping(value = "/")
   public String name() {
      return name;
   }
}

注意-アプリケーションの実行中にプロパティが見つからない場合、Spring BootはIllegal Argument例外をスローします*値 "$ \ {spring.application.name}" *のプレースホルダー 'spring.application.name’を解決できませんでした。

プレースホルダーの問題を解決するには、以下に示すthr構文を使用してプロパティのデフォルト値を設定できます-

@Value("${property_key_name:default_value}")

@Value("${spring.application.name:demoservice}")

スプリングブートアクティブプロファイル

Spring Bootは、Springアクティブプロファイルに基づいてさまざまなプロパティをサポートしています。 たとえば、Spring Bootアプリケーションを実行するために、開発用と本番用の2つのファイルを別々に保持できます。

application.propertiesのSpringアクティブプロファイル

application.propertiesでSpringアクティブプロファイルを持つ方法を理解しましょう。 デフォルトでは、アプリケーション。 プロパティは、Spring Bootアプリケーションの実行に使用されます。 プロファイルベースのプロパティを使用する場合は、以下に示すように、プロファイルごとに個別のプロパティファイルを保持できます-

*application.properties*
server.port = 8080
spring.application.name = demoservice
*application-dev.properties*
server.port = 9090
spring.application.name = demoservice
*application-prod.properties*
server.port = 4431
spring.application.name = demoservice

JARファイルの実行中に、各プロパティファイルに基づいてスプリングアクティブプロファイルを指定する必要があります。 デフォルトでは、Spring Bootアプリケーションはapplication.propertiesファイルを使用します。 スプリングアクティブプロファイルを設定するコマンドは以下に示されています-

Prod.Properties Active Dev

以下に示すように、コンソールログでアクティブなプロファイル名を確認できます-

2017-11-26 08:13:16.322  INFO 14028 --- [
   main] com.finddevguides.demo.DemoApplication  :
   The following profiles are active: dev

これで、Tomcatは以下に示すようにポート9090(http)で開始されました-

2017-11-26 08:13:20.185  INFO 14028 --- [
   main] s.b.c.e.t.TomcatEmbeddedServletContainer :
   Tomcat started on port(s): 9090 (http)

以下に示すように、プロダクションアクティブプロファイルを設定できます-

Production Active Profile

以下に示すように、コンソールログでアクティブなプロファイル名を確認できます-

2017-11-26 08:13:16.322  INFO 14028 --- [
   main] com.finddevguides.demo.DemoApplication  :
   The following profiles are active: prod

次に、Tomcatは以下に示すようにポート4431(http)で開始しました-

2017-11-26 08:13:20.185  INFO 14028 --- [
   main] s.b.c.e.t.TomcatEmbeddedServletContainer :
   Tomcat started on port(s): 4431 (http)

application.ymlのSpringアクティブプロファイル

application.ymlのSpringアクティブプロファイルを保持する方法を理解しましょう。 Springのアクティブなプロファイルプロパティを単一の application.yml ファイルに保持できます。 application.propertiesのような個別のファイルを使用する必要はありません。

以下は、application.ymlファイルでSpringのアクティブなプロファイルを保持するコードの例です。 application.ymlファイルの各プロファイルを区切るために区切り文字(---)が使用されていることに注意してください。

spring:
   application:
      name: demoservice
server:
   port: 8080

---
spring:
   profiles: dev
   application:
      name: demoservice
server:
   port: 9090

---
spring:
   profiles: prod
   application:
      name: demoservice
server:
   port: 4431

開発のアクティブなプロファイルを設定するコマンドを以下に示します-

Prod.Properties Active Dev

以下に示すように、コンソールログでアクティブなプロファイル名を確認できます-

2017-11-26 08:41:37.202  INFO 14104 --- [
   main] com.finddevguides.demo.DemoApplication  :
   The following profiles are active: dev

これで、Tomcatは以下に示すようにポート9090(http)で開始されました-

2017-11-26 08:41:46.650  INFO 14104 --- [
   main] s.b.c.e.t.TomcatEmbeddedServletContainer :
   Tomcat started on port(s): 9090 (http)

実稼働アクティブプロファイルを設定するコマンドは以下のとおりです-

Production Active Profile

以下に示すように、コンソールログでアクティブなプロファイル名を確認できます-

2017-11-26 08:43:10.743  INFO 13400 --- [
   main] com.finddevguides.demo.DemoApplication  :
   The following profiles are active: prod

これにより、以下に示すようにポート4431(http)でTomcatが起動します。

2017-11-26 08:43:14.473  INFO 13400 --- [
   main] s.b.c.e.t.TomcatEmbeddedServletContainer :
   Tomcat started on port(s): 4431 (http)