非主要嵌入式数据库模式未初始化

时间:2018-06-13 09:52:02

标签: spring spring-boot spring-jdbc

我目前正在使用一个使用2个嵌入式数据库的Spring Boot(1.5.10.RELEASE)应用程序。这两个数据库是相同定义的,但是在应用程序本身上定义了一个数据库,并且在导入的JAR上定义的自定义自动配置类中定义了一个数据库;但只有标记为@Primary的应用程序(应用程序中的那个)才能初始化架构。

这是两个数据源的当前定义:

主要,关于申请:

@Configuration
public class DataSourceConfiguration {    

    @Bean
    @ConfigurationProperties(prefix = "first.datasource")
    @Primary
    public DataSourceProperties firstProperties() {
        return new DataSourceProperties();
    }

    @Bean
    @Primary
    public DataSource firstDataSource() {
        return firstProperties().initializeDataSourceBuilder().build();
    }

    @Bean
    @Primary
    public JdbcTemplate firstTemplate() {
        return new JdbcTemplate(firstDataSource());
    }
}

在自动配置:

@Configuration
@ConditionalOnProperty(name = "second.datasource.url")
public class SecondDataSourceAutoconfiguration {

    @Bean
    @ConfigurationProperties(prefix = "second.datasource")
    public DataSourceProperties secondProperties() {
        return new DataSourceProperties();
    }

    @Bean
    public DataSource secondDataSource() {
         return secondProperties().initializeDataSourceBuilder().build();
    }

    @Bean
    public JdbcTemplate secondJdbcTemplate(@Qualifier("secondDataSource") DataSource datasource) {
        return new JdbcTemplate(datasource);
    }
}

我的application.yml填充了属性:

first:
    datasource:
        url: jdbc:h2:firstdb;DB_CLOSE_ON_EXIT=FALSE
second:
    datasource:
        url: jdbc:h2:seconddb
        platform: h2

我的资源文件夹包含schema.sqlfirstdb上执行的schema-h2.sqlseconddb,它应该在datasource.schema上执行但不会执行。我尝试使用datasource.initializeschema-h2.sql属性,将脚本名称和平台属性切换到第一个数据源(在这种情况下,firstdbseconddb上执行,但response.json().fruites )上没有任何内容,并将嵌入式数据库提供程序更改为HSQLDB;但无论如何都无法初始化非主要内存数据库的模式。

0 个答案:

没有答案