Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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.datasource.tomcat.*?_Java_Spring_Tomcat_Spring Boot - Fatal编程技术网

Java 弹簧靴不';在以编程方式配置数据源时,是否选择spring.datasource.tomcat.*?

Java 弹簧靴不';在以编程方式配置数据源时,是否选择spring.datasource.tomcat.*?,java,spring,tomcat,spring-boot,Java,Spring,Tomcat,Spring Boot,我正在配置两个数据源,并尝试设置池属性,根据文档,我应该使用spring.datasource.tomcat.*,这似乎与我正在进行的配置不兼容。我做错了什么?或者我错过了什么 My application.properties: spring.datasource.tomcat.test-on-borrow=true spring.datasource.tomcat.validationQuery=SELECT 1 spring.datasource.url=jdbc:mysql://loc

我正在配置两个数据源,并尝试设置池属性,根据文档,我应该使用spring.datasource.tomcat.*,这似乎与我正在进行的配置不兼容。我做错了什么?或者我错过了什么

My application.properties:

spring.datasource.tomcat.test-on-borrow=true
spring.datasource.tomcat.validationQuery=SELECT 1 
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username
spring.datasource.password

spring.read.datasource.tomcat.test-on-borrow=true
spring.read.datasource.tomcat.validationQuery=SELECT 1 
spring.read.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.read.datasource.username
spring.read.datasource.password
下面是我的配置类: 我有一个类似的读取数据源(用于不同的回购/实体)

如果我尝试使用spring.datasource.test on borrow=true,那么这就行了

我真的想知道为什么.tomcat.*样式不起作用?我能做些什么来让它工作呢


即使有人引导我阅读一些有助于理解这一点的阅读材料,我也会很高兴。:)

该文档是关于自动配置的,您没有使用它。如果您正在编写自定义代码来设置
数据源
,那么您也将负责配置的绑定

上面的代码有一个
@configurationproperties(“spring.datasource”)
。如果删除该属性,则在您自己的代码中不会考虑任何
spring.datasource.*
属性

解释基本属性(
spring.datasource
)和数据源绑定(
spring.datasource.xyz.*
)之间的区别

无论如何,如果您自己创建
数据源
(为什么?)。重复使用
spring.datasource
名称空间是相当令人困惑的,因为用户希望自动配置提供的功能得到尊重。而且他们不会,因为你正在编写自己的配置

  • 如果只有一个数据源和自动配置,则只需使用spring.datasource.*进行配置。tomcatcp将被选为默认cp

  • 在您的情况下:以编程方式配置两个数据源,请在应用程序中添加以下注释spring.datasource.type。properties告诉它您选择了哪个连接池

  • 
    spring.datasource.type=org.apache.tomcat.jdbc.pool.datasource
    spring.read.datasource.type=org.apache.tomcat.jdbc.pool.datasource
    

    我在我的
    应用程序.properties中添加了以下两行

    spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
    spring.read.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
    

    它正在工作…谢谢。

    您使用的是哪个版本?我使用的是1.5.4,1.5.7中的情况也一样。数据源未拾取
    spring.DataSource.tomcat.*
    properties。对我来说,甚至spring.datasource.test on borrow=true都不起作用。这里记录了一个问题:那么如何配置多个数据源以使池属性不受影响。(本例中为tomcat jdbc池)。文档中没有任何地方涉及到这一点,文档中完全涵盖了这一点(我在回答中给出了一个链接)。你看过了吗?找到了。我不知道连接属性也可以在同一命名空间中指定。感谢您的帮助,我自己创建了两个数据源bean,因为我想连接到一个写数据源和一个读数据源,并基于包名为这两个数据源启用jpa repos。这非常有用!我们将所有微服务更新为新的特定于池的配置,包括一个具有两个数据源的配置。对于自动配置的数据源,我们需要
    *datasource.tomcat.*
    ,而对于手动配置的数据源,则忽略池名,这不是很直观。在引入特定于池的属性之前,自动配置和手动数据源的结构都是相同的。然而,我不得不承认,从技术角度来看,这绝对是有道理的。
    spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource
    spring.read.datasource.type=org.apache.tomcat.jdbc.pool.DataSource