我开始使用Spring Boot,并相信我了解如何使用特定于环境的属性文件覆盖属性文件值。例如。如果我有一个application.properties文件

spring.datasource.url=jdbc:sybase:Tds:server.co.uk:10010/database_dev
spring.datasource.username=dev_username
spring.datasource.password=dev_password
spring.datasource.driver-class-name=com.sybase.jdbc3.jdbc.SybDriver


和一个application-test.properties文件

spring.datasource.url=jdbc:sybase:Tds:server.co.uk:10010/database_test
spring.datasource.username=test_username
spring.datasource.password=test_password


然后,如果我以vm arg身份通过测试配置文件,则用户名,密码和url将来自application-test.properties文件,而驱动程序类名称则来自application.properties。

到目前为止,一切都很好.....

但是我想做的是

使用application.properties在本地运行,使用

spring.datasource.url=jdbc:sybase:Tds:server.co.uk:10010/database_dev
spring.datasource.username=dev_username
spring.datasource.password=dev_password
spring.datasource.driver-class-name=com.sybase.jdbc3.jdbc.SybDriver


但使用application-test.properties在测试中运行,请使用

spring.datasource.jndi-name=java:comp/env/jdbc/my_jndi_name


根据我的理解,问题在于application-test.properties文件将仅“覆盖”相同名称的属性,而我需要以与本地方式不同的方式在测试/生产中访问数据源。

另一种解决方案可能是在本地使用jndi以及althopugh,我不确定如何在Spring Boot中使用嵌入式tomcat服务器进行配置(我在较高环境中使用websphere)

有人可以建议吗?

最佳答案

使用两个不同的配置文件,一个“ prod”和一个“ test”,并确保您未在​​application.properties中声明任何可能与application-test.properties或application-prod.properties冲突的属性

07-24 09:32