2017-02-24 20 views
3

SpringBoot 1.5.1に問題があります。私はdevの環境のためにapplication.propertiesapplication-dev.propertiesを作成しました。SpringBoot:Configuration Production対開発環境

主な違いは、永続性です。生産(application.properties)にはJNDI(Tomcatで設定)があり、devにはローカルdb(H2)があります。

これはapplication.propertiesの私のconfです:

spring.datasource.jndi-name=jdbc/db 

そして、これがapplication-dev.propertiesです:

spring.datasource.url=jdbc:h2:file:~/db 
spring.datasource.username=sa 
spring.datasource.password= 
spring.datasource.driverClassName=org.h2.Driver 

しかし、私はdevのプロファイル

2017-02-24 15:25:39.948 INFO 7912 --- [   main] it.geny.MmqApplication     : The following profiles are active: dev 

私のアプリで始めていますJNDI jdbc/dbを見つけられなかったので停止します。私はapplication-dev.propertiesのログ設定を変更しようとしていて、うまくいきます!しかし、永続性設定の変更はありません。事前に

おかげでapplication-dev.properties

答えて

6

すべてのプロパティがapplication.propertiesでプロパティをオーバーライドします。しかし、application.propertiesがdevで設定されていないプロパティである場合、それらはコンテキストにも含まれます。プロパティーspring.datasource.jndi-nameが有効な場合、すべてのプロパティーは無視されます。spring.datasource

解決策は、application-prod.propertiesのような別のプロパティファイルを作成し、そこにspring.datasource.jndi-nameを設定することです。データソースの内容はapplication-dev.propertiesにとどまります。あなたのapplication.propertiesファイルで

あなたが使用したいプロファイルを有効にする必要があります。spring.profiles.active=prodまたは

+0

spring.profiles.active=dev私たちは似た何かを - 多くの場合、いくつかの展開ティア(DEV、DEV2、QA、QA2、UAT、PRODなど)とを。異なるプロパティファイル名を使用するのではなく、階層固有のプロパティファイル用に/ src/main/resourcesに異なるフォルダを用意しています。起動時には、展開層(qa2など)を識別する環境変数を指定します。これは、階層固有の設定データを検索するために使用されます。 –