开发者社区> 问答> 正文

采用config.file来定义数据源则dbType获取不了,返回NULL

if (this.dbType == null || this.dbType.length() == 0) { this.dbType = JdbcUtils.getDbType(jdbcUrl, null); }

    for (Filter filter : filters) {
        filter.init(this);
    }

DruidDataSource的init方法中,dbType的赋值在filter.init前,如果我们采用ConfigFilter来配置数据源,由于jdbcUrl是在ConfigFilter中才会设置,所以dbType就获取不了,能否调整一下上述代码的顺序?

原提问者GitHub用户rainsoft

展开
收起
山海行 2023-07-05 21:55:41 45 0
4 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    个问题的原因可能是因为config.file文件中没有正确配置数据源的相关信息,导致dbType获取不到,返回NULL。

    config.file文件一般用来配置应用程序的一些参数,包括数据源的相关信息。在使用config.file配置数据源时,需要确保以下几点:

    config.file文件的路径和名称都是正确的。
    数据源的相关信息(如数据库类型、数据库地址、用户名、密码等)都正确配置。
    在应用程序中正确获取config.file文件中数据源信息的代码。
    如果以上几点都正确配置,但仍然出现dbType获取不到的问题,可以尝试以下解决方案:

    检查config.file文件是否正确加载。可以在应用程序中添加日志输出,确认config.file文件被正确加载。
    检查dbType获取的代码是否正确。可以在代码中添加日志输出,确认dbType获取的代码正确执行。
    检查数据源相关的jar包是否正确引入。如果缺少相关的jar包,可能会导致dbType获取不到。

    2023-07-30 09:38:29
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    可以调整代码的顺序,确保在执行filter.init之前获取并设置dbType。你可以将获取dbType的代码放在filter.init之前,如下所示:

    if (this.dbType == null || this.dbType.length() == 0) {
    this.dbType = JdbcUtils.getDbType(jdbcUrl, null);
    }

    for (Filter filter : filters) {
    filter.init(this);
    }
    这样可确保在执行filter.init之前获取并设置了dbType的值,即使使用ConfigFilter配置数据源,也能正确获取dbType。

    2023-07-11 16:15:09
    赞同 展开评论 打赏
  • 问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14

    原回答者GitHub用户wenshao

    2023-07-06 12:30:19
    赞同 展开评论 打赏
  • 根据您提供的代码片段,确实存在一个问题。在DruidDataSource的初始化方法中,初始化过滤器(filters)之前,应该先获取数据库类型(dbType),以便在过滤器初始化时使用。

    要解决这个问题,您可以尝试修改代码的顺序,将获取数据库类型的逻辑放在过滤器初始化之前。例如,可以将以下代码段:

    if (this.dbType == null || this.dbType.length() == 0) { this.dbType = JdbcUtils.getDbType(jdbcUrl, null); } 移到过滤器初始化之前,如下所示:

    this.dbType = JdbcUtils.getDbType(jdbcUrl, null); for (Filter filter : filters) { filter.init(this); } 这样就确保了在过滤器初始化之前获取到了数据库类型,并且可以在过滤器中正确使用它。

    2023-07-06 09:15:42
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载