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)