有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring引导:配置h2 jdbc url

spring引导配置中的内存数据库工作正常,代码如下。但url并不是从YAML配置中获取的。尽管启用了h2控制台

在日志中,url打印为内存数据库

  1. 如何将jdbc url从内存更改为文件

日志文件

2020-09-03 14:22:42.595 [RMI TCP Connection(2)-10.44.33.51] DEBUG o.s.jdbc.datasource.DataSourceUtils - Fetching JDBC Connection from DataSource

2020-09-03 14:22:42.595 [RMI TCP Connection(2)-10.44.33.51] DEBUG o.s.j.d.SimpleDriverDataSource - Creating new JDBC Driver Connection to [jdbc:h2:mem:testdb;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false]

@Configuration
public class DataSourceConfiguration {

@Bean
@Primary
public DataSource dataSource() {
    return new EmbeddedDatabaseBuilder()
            .setType(EmbeddedDatabaseType.H2)
            .setName("testdb;MODE=Oracle")
            .addScript("classpath:sql/Create-table.sql")
            .build();
}
}

YAML配置

  spring:
      h2:
        console:
          enabled: true
          path: /h2
      datasource:
        url: jdbc:h2:file:C:/db/test
        username: test
        password: password
        driverClassName: org.h2.Driver

共 (1) 个答案

  1. # 1 楼答案

    不要定义dataSourcebean。通过属性文件配置datasource。如果要在应用程序启动时执行DDL和/或DMLsql脚本,可以执行以下操作:

    spring:
      datasource:
        url: jdbc:h2:file:C:/db/test
        username: test
        password: password
        schema: classpath:sql/Create-table.sql
        data: classpath:sql/fill-table.sql
    

    默认情况下,Spring Boot会在应用程序类路径的根目录(例如src/main/resources/schema.sql)中查找文件schema.sqldata.sql,但您可以在属性{}{}中重写此行为,就像上面的代码示例一样