我开始使用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冲突的属性