【问题标题】:Where does the default datasource url for h2 come from on Spring Boot?Spring Boot 上 h2 的默认数据源 url 来自哪里?
【发布时间】:2017-11-10 19:27:33
【问题描述】:

我开始了一个新的 spring-boot 1.5.3 项目。添加了一些启动器:

  • 数据-jpa
  • 入门网站
  • 数据休息

然后添加

  • 开发工具
  • h2

我可以看到数据源自动设置为jdbc:h2:mem:testdb。一切正常,但出于好奇,我试图确定 jdbc:h2:mem:testdb 值的来源。我搜索了 spring-boot、spring-data、spring jdbc 和 devtools 项目的源代码,但无法找到。据我所知,该值也不是来自 h2 的默认建议。

那么这个值究竟是从哪里来的呢?

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    这将来自这个类,它还包含其他风格的 in-mem DB 的默认值。

    https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/jdbc/EmbeddedDatabaseConnection.java

    H2(EmbeddedDatabaseType.H2, "org.h2.Driver", "jdbc:h2:mem:%s;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"),

    如果满足条件,则通过 DataSourceAutoConfiguration 加载哪个 get,

    https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceAutoConfiguration.java

    数据库名称的默认值 testdb 来自 Datasourceproperties 中的默认设置,

    https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/jdbc/DataSourceProperties.java

    private String name = "testdb";

    【讨论】:

    • 这是一个完整、精确、正是我正在寻找的答案。非常感谢达伦!作为我 Spring 的初学者,我将尝试改进这方面的文档。
    • 从 2.3.3 版开始,您可以在以下位置找到“testdb”:public String determineDatabaseName()
    猜你喜欢
    • 2017-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2015-04-05
    • 2018-09-10
    • 2021-11-21
    • 2018-11-29
    相关资源
    最近更新 更多