我试图使用Spring和Maven为我的web应用程序配置多个部署环境。在src/main/resources/config下创建了几个.properties文件。属性和db-prod.properties由db特定信息组成:
db.url=jdbc:oracle:thin:@ldap://dev.com/risstg3,
db.username=owner
db.password=godzilla在同一个目录中,我也有application.properties,它读取在这些db属性文件中定义的变量。
#database info
spring.datasource.driverClassName=oracle.jdbc.OracleDriver
spring.datasource.url=${db.url}
spring.datasource.username=${db.username}
spring.datasource.password=${db.password}
#hibernate config
spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect在我的pom中设置了多个配置文件:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
</profile>
</profiles>
<build>
<filters>
<filter>src/main/resources/config/db-${env}.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/resources/config</directory>
<filtering>true</filtering>
</resource>
</resources>所有其他配置都由Spring负责,并在我的应用程序类中使用@SpringBootApplication注释。
然后,我通过使用-P选项(例如mvn install -Pprod )指定配置文件来构建war。但是,由于以下错误,我未能在本地计算机上使用tomcat部署它:
SEVERE: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ristoreService]]
Caused by: org.hibernate.HibernateException: Access to DialectResolutionInfo cannot be null when 'hibernate.dialect' not set我以为我把“hibernate.dialect”和spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect放在application.properties里
基于此thread,此错误可能不一定与hibernate方言有关。如果db连接不成功,您可能会看到它。我错过了什么?是否有一种方法可以判断war是否是用正确的配置文件创建的,以及是否获取了db-{dev}.properties中定义的变量?
发布于 2016-08-23 04:29:57
这与您的设置略有不同,但我认为这将有助于以一种更适合Spring的方式解决问题。弹簧有轮廓的概念。您可以创建application.properties文件作为默认设置,然后为配置文件特定的设置设置application-${profile}.properties。如果您创建了一个application-dev.properties和一个application-prod.properties,那么您所需要做的就是指定一个名为spring.profiles.active=dev的环境变量,并使用这些变量。这样,您就不需要为每种类型的部署创建单独的jar文件。
http://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-change-configuration-depending-on-the-environment
https://stackoverflow.com/questions/39091901
复制相似问题