Tomcat 数据源属性的SpringBoot配置文件

Tomcat 数据源属性的SpringBoot配置文件,tomcat,spring-boot,datasource,jndi,Tomcat,Spring Boot,Datasource,Jndi,我开始使用SpringBoot,并且相信我了解如何用特定于环境的属性文件覆盖属性文件值。例如,如果我有一个应用程序.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-clas

我开始使用SpringBoot,并且相信我了解如何用特定于环境的属性文件覆盖属性文件值。例如,如果我有一个应用程序.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
以及一个应用程序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参数的形式通过测试配置文件,用户名、密码和url将来自应用程序test.properties文件,驱动程序类名来自应用程序.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
spring.datasource.jndi-name=java:comp/env/jdbc/my_jndi_name
但使用应用程序测试.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
spring.datasource.jndi-name=java:comp/env/jdbc/my_jndi_name
据我所知,问题在于应用程序test.properties文件将只“覆盖”相同名称的属性,而我需要在test/prod中以不同的方式访问数据源,以了解我在本地的情况

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


有人建议吗?

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

使用两个不同的配置文件,一个“prod”和一个“test”,并确保您没有在application.properties中声明任何可能与application-test.properties或application-prod.properties冲突的属性,因此我决定通过在本地和更高的环境(test和prod)中使用jndi查找来实现这一点。因此,我不再根据环境使用不同的应用程序属性(例如,local中的datasource.username和datasource.password以及test和prod中的datasource.jndi-name),而是在所有环境中使用datasource.jndi-name


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

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


我确实还有一个问题,其中一个数据源连接正确,而另一个数据源出现故障,但我会将其作为一个单独的问题发布,因为它与此问题不同。

您尝试过吗…您尝试过吗。。。