【问题标题】:SpringBoot Profiles for datasource properties数据源属性的 SpringBoot Profiles
【发布时间】:2017-01-25 17:03:35
【问题描述】:

我开始使用 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 文件和驱动程序类名来自 应用程序.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 althopugh 我不确定如何在 Spring Boot 中使用嵌入式 tomcat 服务器配置它,(我在更高的环境中使用 websphere)

谁能给点建议?

【问题讨论】:

  • 你试过了吗...

标签: tomcat spring-boot datasource jndi


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    所以我决定通过在本地和更高的环境(测试和产品)中使用 jndi 查找来解决这个问题。因此,我不再根据环境使用不同的应用程序属性(例如本地的 datasource.username 和 datasource.password 以及 test 和 prod 的 datasource.jndi-name),我现在只在所有环境中使用 datasource.jndi-name。

    我确实还有一个问题,其中一个数据源连接正确,而另一个失败,但我将把它作为一个单独的问题发布,因为它与这个问题不同。

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2022-12-17
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多