1. <i id='rdAmu'><tr id='rdAmu'><dt id='rdAmu'><q id='rdAmu'><span id='rdAmu'><b id='rdAmu'><form id='rdAmu'><ins id='rdAmu'></ins><ul id='rdAmu'></ul><sub id='rdAmu'></sub></form><legend id='rdAmu'></legend><bdo id='rdAmu'><pre id='rdAmu'><center id='rdAmu'></center></pre></bdo></b><th id='rdAmu'></th></span></q></dt></tr></i><div id='rdAmu'><tfoot id='rdAmu'></tfoot><dl id='rdAmu'><fieldset id='rdAmu'></fieldset></dl></div>
    <tfoot id='rdAmu'></tfoot>

    • <bdo id='rdAmu'></bdo><ul id='rdAmu'></ul>
    <legend id='rdAmu'><style id='rdAmu'><dir id='rdAmu'><q id='rdAmu'></q></dir></style></legend>

      <small id='rdAmu'></small><noframes id='rdAmu'>

    1. Spring Boot集成Druid出现异常报错的原因及解决

      时间:2023-12-07

      <i id='NY9IH'><tr id='NY9IH'><dt id='NY9IH'><q id='NY9IH'><span id='NY9IH'><b id='NY9IH'><form id='NY9IH'><ins id='NY9IH'></ins><ul id='NY9IH'></ul><sub id='NY9IH'></sub></form><legend id='NY9IH'></legend><bdo id='NY9IH'><pre id='NY9IH'><center id='NY9IH'></center></pre></bdo></b><th id='NY9IH'></th></span></q></dt></tr></i><div id='NY9IH'><tfoot id='NY9IH'></tfoot><dl id='NY9IH'><fieldset id='NY9IH'></fieldset></dl></div>
          <tbody id='NY9IH'></tbody>
              <bdo id='NY9IH'></bdo><ul id='NY9IH'></ul>
            • <legend id='NY9IH'><style id='NY9IH'><dir id='NY9IH'><q id='NY9IH'></q></dir></style></legend>

              <small id='NY9IH'></small><noframes id='NY9IH'>

              <tfoot id='NY9IH'></tfoot>

                下面就是详细讲解Spring Boot集成Druid出现异常报错的原因及解决的完整攻略。

                问题背景

                在Spring Boot中使用Druid连接池时,有可能会出现以下异常错误:

                org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dataSource': Unsatisfied dependency expressed through constructor parameter 0: Error creating bean with name 'dataSourceConfiguration': Invocation of init method failed; nested exception is javax.validation.ValidationException: Unable to instantiate Configuration
                

                这个错误一般是由于Druid的配置没有成功加载所致,可能会出现以下情况:

                • 无法正确加载Druid的数据源配置文件
                • 缺少相关的依赖包
                • 配置信息有误

                接下来,我们就分别来讲解这些原因以及解决方法。

                问题分析

                问题1:无法正确加载Druid的数据源配置文件

                如果我们没有正确加载Druid的数据源配置文件,那么就会导致连接池无法正常工作。因此,我们需要确定数据源配置文件是否存在以及是否被正确加载。

                解决方法

                我们可以先检查配置文件路径以及名称是否与代码中的路径和名称一致。然后,可以在代码中加入如下语句来检查是否正确加载了配置文件:

                System.out.println(dataSource);
                

                这个语句会在控制台中输出数据源的详细信息,如果这个信息没有输出,那么说明配置文件没有被正确加载。

                问题2:缺少相关的依赖包

                如果我们的项目缺少Druid或者相关的依赖包,那么就会导致连接池无法正常工作。因此,我们需要检查是否已经添加Druid和相关的依赖包。

                解决方法

                在pom.xml文件中,确保已经添加了以下依赖包:

                <dependency>
                  <groupId>com.alibaba</groupId>
                  <artifactId>druid-spring-boot-starter</artifactId>
                  <version>1.1.22</version>
                </dependency>
                

                问题3:配置信息有误

                如果我们在配置Druid时出现了错误,比如配置信息有误,那么就可能会导致连接池无法正常工作。因此,我们需要检查Druid的配置信息是否正确。

                解决方法

                在application.yml或application.properties文件中,应该已经配置了Druid的相关信息,比如:

                spring:
                  datasource:
                    driver-class-name: com.mysql.jdbc.Driver
                    url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
                    username: root
                    password: root
                    type: com.alibaba.druid.pool.DruidDataSource
                    # 下面是Druid的配置信息
                    druid:
                      validation-query: SELECT 1 FROM DUAL
                      test-while-idle: true
                      test-on-borrow: false
                      test-on-return: false
                      pool-prepared-statements: true
                      max-pool-prepared-statement-per-connection-size: 20
                

                在这里,我们可以看到除了mysql数据库的配置信息之外,还应该包含了如下Druid的配置信息:

                • validation-query: 验证连接是否可用的SQL语句
                • test-while-idle: 是否在空闲时检测连接是否可用
                • test-on-borrow: 是否在获取连接时检测连接是否可用
                • test-on-return: 是否在归还连接时检测连接是否可用
                • pool-prepared-statements: 是否缓存PreparedStatement,可以提高性能
                • max-pool-prepared-statement-per-connection-size: PreparedStatement的缓存大小

                如果配置信息有误,就会导致Druid无法正常工作,因此需要检查以上信息是否正确。

                示例说明

                下面是两个针对问题2和问题3的示例说明:

                示例1:缺少相关的依赖包

                在pom.xml文件中加入以下依赖包:

                <dependency>
                  <groupId>com.alibaba</groupId>
                  <artifactId>druid-spring-boot-starter</artifactId>
                  <version>1.1.22</version>
                </dependency>
                

                示例2:配置信息有误

                在application.yml或application.properties文件中,配置信息应该正确,比如:

                spring:
                  datasource:
                    driver-class-name: com.mysql.jdbc.Driver
                    url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
                    username: root
                    password: root
                    type: com.alibaba.druid.pool.DruidDataSource
                    # 下面是Druid的配置信息
                    druid:
                      validation-query: SELECT 1 FROM DUAL
                      test-while-idle: true
                      test-on-borrow: false
                      test-on-return: false
                      pool-prepared-statements: true
                      max-pool-prepared-statement-per-connection-size: 20
                

                以上就是Spring Boot集成Druid出现异常报错的原因及解决的完整攻略。

                上一篇:python数据库操作指南之PyMysql使用详解 下一篇:Redis数据库安全详解

                相关文章

                <i id='leINw'><tr id='leINw'><dt id='leINw'><q id='leINw'><span id='leINw'><b id='leINw'><form id='leINw'><ins id='leINw'></ins><ul id='leINw'></ul><sub id='leINw'></sub></form><legend id='leINw'></legend><bdo id='leINw'><pre id='leINw'><center id='leINw'></center></pre></bdo></b><th id='leINw'></th></span></q></dt></tr></i><div id='leINw'><tfoot id='leINw'></tfoot><dl id='leINw'><fieldset id='leINw'></fieldset></dl></div>
              1. <legend id='leINw'><style id='leINw'><dir id='leINw'><q id='leINw'></q></dir></style></legend>

                    <small id='leINw'></small><noframes id='leINw'>

                    • <bdo id='leINw'></bdo><ul id='leINw'></ul>

                    <tfoot id='leINw'></tfoot>