我开始使用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 文件只会“覆盖”同名的属性,而我需要在test /中以不同的方式访问我的数据源刺激我如何在当地。
另一种解决方案可能是在本地使用jndi以及我不确定如何使用嵌入式tomcat服务器在Spring Boot中配置它(我在更高的环境中使用websphere)
有人可以提供建议吗?
答案 0 :(得分:2)
使用两个不同的配置文件,一个'prod'和一个'test',并确保你没有在application.properties中声明任何可能与application-test.properties或application-prod.properties冲突的属性
答案 1 :(得分:0)
所以我决定通过在本地和更高环境(测试和产品)中使用jndi查找来解决这个问题。因此,不依赖于环境使用不同的应用程序属性(例如,测试和prod中的localas.username和datasource.jandi-name中的datasource.username和datasource.password),我现在只在所有环境中使用datasource.jndi-name。
我确实有一个问题,其中一个数据源正确连接而另一个失败,但我会将其作为一个单独的问题发布,因为它与此问题不同。