これが私のapplication.ymlファイルです:
spring:
freemarker:
template-loader-path: classpath:/templates
datasource:
url: jdbc:postgresql://localhost:5432/myapp
username: postgres
password: password
driver-class-name: org.postgresql.Driver
jpa:
show-sql: true
properties:
hibernate:
enable_lazy_load_no_trans: false
jdbc:
lob:
non_contextual_creation: true
dialect: org.hibernate.dialect.PostgreSQLDialect
hibernate:
ddl-auto: create-drop
---
spring:
profiles:
active: development
---
spring:
profiles: staging
jpa:
show-sql: true
hibernate:
ddl-auto: update
logging:
level:
root: DEBUG
---
spring:
profiles: production
jpa:
show-sql: false
hibernate:
ddl-auto: update
私は次を使用してアプリケーションを実行します:
Java -jar application.jar -Dspring.profiles.active=staging
ログで、春のブートが出力されることがわかります:次のプロファイルがアクティブです:開発
では、コマンドライン引数で明示的に設定しているにもかかわらず、アクティブプロファイルがstagingに設定されていないのはなぜですか?
順序は重要です。システムプロパティを設定するには、次を使用します。
Java -jar -Dspring.profiles.active=staging application.jar
あなたが言及した行はアプリケーションの引数を渡します。
a Javaアプリケーションを起動します。コマンドで起動します
Java [ options ] -jar file.jar [ arguments ]
春のプロファイルspring-docs
Spring環境にはこのためのAPIがありますが、通常はシステムプロパティ(spring.profiles.active)またはOS環境変数(SPRING_PROFILES_ACTIVE)を設定します。また、次のように、-D引数を使用してアプリケーションを起動できます(メインクラスまたはjarアーカイブの前に配置することを忘れないでください)。
$ Java -jar -Dspring.profiles.active=production demo-0.0.1-SNAPSHOT.jar
Spring Bootでは、次の例に示すように、application.propertiesでアクティブプロファイルを設定することもできます。
spring.profiles.active=production
Spring.profiles.active環境プロパティを使用して、アクティブにするプロファイルを指定できます。次のスイッチを使用して、コマンドラインで指定することもできます。 spring-docs
$ Java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod
複数のプロファイルの場合
$ Java -jar demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev,hsqldb
jarファイルの前にオプションを指定し、その後に引数を指定する必要があります
Java [-options] -jar jarfile [args...]
-Dspring.profiles.active = stagingはオプションであり、引数ではありません。次のように変更してください
Java -jar -Dspring.profiles.active=staging application.jar