SpringBoot:配置生产与开发环境

问题描述:

我遇到了SpringBoot 1.5.1的问题。我为我的开发环境创建了application.propertiesapplication-dev.propertiesSpringBoot:配置生产与开发环境

主要的区别是持久性:在生产中(application.properties)有一个JNDI(在Tomcat上配置),在开发中有一个本地数据库(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 

但是,当我开始与开发轮廓

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属性将覆盖application.properties属性。但是,如果在application.properties是未在开发人员中设置的属性,他们也将包含在上下文中。如果启用了属性spring.datasource.jndi-name,则所有spring.datasource属性都将被忽略。

解决的办法是创建另一个属性文件,如application-prod.properties并在那里设置spring.datasource.jndi-name。数据源的东西可以留在application-dev.properties

在你application.properties文件,你应该让你想使用的配置文件:spring.profiles.active=prodspring.profiles.active=dev

+0

我们做同样的事情 - 经常与几个部署层(DEV,DEV2,QA,QA 2,UAT,PROD等) 。我们为/ src/main/resources下的特定于层的属性文件提供了不同的文件夹,而不是使用不同的属性文件名。在启动时,我们提供了一个识别部署层(如qa2)的环境变量,这用于查找任何特定于层的配置数据。 –