Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在spring引导控制器内有条件地更改spring.datasource.url变量值_Java_Spring_Spring Boot_Spring Jdbc - Fatal编程技术网

Java 在spring引导控制器内有条件地更改spring.datasource.url变量值

Java 在spring引导控制器内有条件地更改spring.datasource.url变量值,java,spring,spring-boot,spring-jdbc,Java,Spring,Spring Boot,Spring Jdbc,我正在尝试为不同的地区开发一个微服务。所以我已经在application.properties中配置了spring.datasource.url变量。如果出现从另一个数据库检索数据的情况,我是否可以更改application.properties中已经设置的“spring.datasource.url”变量的值 目前,我添加了application.properties文件,如下所示: spring.datasource.url=jdbc:postgresql://localhost/<m

我正在尝试为不同的地区开发一个微服务。所以我已经在application.properties中配置了spring.datasource.url变量。如果出现从另一个数据库检索数据的情况,我是否可以更改application.properties中已经设置的“spring.datasource.url”变量的值

目前,我添加了application.properties文件,如下所示:

spring.datasource.url=jdbc:postgresql://localhost/<my_DB_Name>
spring.datasource.username=<my_username>
spring.datasource.password=<my_password>
spring.jpa.generate-ddl=true
spring.datasource.url=jdbc:postgresql://localhost/
spring.datasource.username=
spring.datasource.password=
spring.jpa.generate ddl=true

在我的应用程序中,有一些功能可以从另一个数据库获取数据。因此,我可以有条件地从控制器更改url变量吗?

动态数据源选择的唯一选项是使用

对评注1的反应: 由于这不是常见的用例,所以示例不多。我以前没用过。你最好的办法就是看看。当然,Spring在当时是不同的野兽,您需要将这个示例映射到现代API上。特别是Java配置,而不是示例中使用的XML配置。但这很容易

对评注2的反应: 您可以在
targetDataSources
map中指定区域数据库。决定使用哪个数据源的逻辑将进入
确定当前查找键
,该逻辑将查找键返回到
目标数据源
。您需要从控制器中传递它,所以如果您找不到任何其他机制如何注入用于获取数据源的状态,您仍然可以使用
@RequestScope
bean并以这种方式传递它


我相信这个例子非常清楚,适合您的用例(假设您有有限数量的reagion DBs)。

不,这是不可能的。为什么不声明两个数据源并根据您的情况使用其中一个,以便我可以为两个不同的区域开发微服务?需要为不同的地区分别部署应用程序吗?目前我的数据库设计是横向划分的。一个区域一个数据库。另外一个地区也有。你能提供一些关于这个解决方案实施的好文件吗,因为我是春天世界的新手。让我看看教程。谢谢您的回复,先生。我检查了功能。它只是直接注入XML文件th dispatcher servlet中指定的完整bean配置。但实际上,我需要根据一种特定类型的用户或用户活动有条件地分配数据源url。这实际上是我的要求。我解释了如何将示例适配到您的用例中。