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

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

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

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

Step 1 −実行可能JARファイルを作成したら、コマンドを使用して実行します java –jar <JARFILE>

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

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

プロパティファイル

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

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

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

上記のコードでは、SpringBootアプリケーションのデモサービスがポート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}")

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

@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;
   }
}

Note −アプリケーションの実行中にプロパティが見つからない場合、SpringBootはIllegalArgument例外を次のようにスローします。 Could not resolve placeholder 'spring.application.name' in value "${spring.application.name}"

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

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

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

SpringBootアクティブプロファイル

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

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

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

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

以下に示すように、コンソールログにア​​クティブなプロファイル名が表示されます。

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.tutorialspoint.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)

以下に示すように、本番アクティブプロファイルを設定できます。

以下に示すように、コンソールログにア​​クティブなプロファイル名が表示されます。

2017-11-26 08:13:16.322  INFO 14028 --- [           
   main] com.tutorialspoint.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のアクティブプロファイルプロパティを1つにまとめることができますapplication.ymlファイル。application.propertiesのような別のファイルを使用する必要はありません。

以下は、Springのアクティブなプロファイルをapplication.ymlファイルに保持するためのサンプルコードです。区切り文字(---)は、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

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

以下に示すように、コンソールログにア​​クティブなプロファイル名が表示されます。

2017-11-26 08:41:37.202  INFO 14104 --- [           
   main] com.tutorialspoint.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)

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

以下に示すように、コンソールログにア​​クティブなプロファイル名が表示されます。

2017-11-26 08:43:10.743  INFO 13400 --- [    
   main] com.tutorialspoint.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)