mysql - DataSourceInitializer 不适用于 Spring boot 1.2

标签 mysql spring spring-mvc spring-boot

我是 Spring boot 的新手。我想在数据库创建时添加一些 sql,例如种子数据。

@Value("classpath:com/foo/sql/db-test-data.sql")
private Resource dataScript;

@Bean
public DataSourceInitializer dataSourceInitializer(final DataSource dataSource) {
    final DataSourceInitializer initializer = new DataSourceInitializer();
    initializer.setDataSource(dataSource);
    initializer.setDatabasePopulator(databasePopulator());
    return initializer;
}

private DatabasePopulator databasePopulator() {
    final ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
    populator.addScript(dataScript);
    return populator;
}

props.put("hibernate.query.substitutions", "true 1, false 0");
        props.put("hibernate.hbm2ddl.auto", "create-drop");
        props.put("hibernate.show_sql", "false");
        props.put("hibernate.format_sql", "true");

我已经执行了这个操作。但是它在 spring boot 上不起作用。任何人都可以帮助我。

最佳答案

有时 spring-boot 的阻碍多于帮助;恕我直言,对于 Web 应用程序尤其如此。

要解决这个问题,您可以做的是重命名您定义的 bean。

@Bean("springBootPleaseStopTellingMeHowYouThinkDataSourceInitializer")
public DataSourceInitializer dataSourceInitializer(DataSource dataSource) {
    // build it.
}

现在,关闭在 application.properties 中查找 data.sql 的内置位

spring.datasource.initialize=false

好了,现在启动已经完成了。

关于mysql - DataSourceInitializer 不适用于 Spring boot 1.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33123771/

相关文章:

php - CakePHP - 错误 : SQLSTATE[HY000]: General error: 1364 Field 'title'

java - spring中@component的xml配置表示是什么

java - Spring 缓存-空键返回用于缓存操作

java - 绝对uri : http://java. sun.com/jsp/jSTL/core无法解析

mysql - 检查 mysql 中格式正确和/或有效的几何图形

mysql - 为什么我在 LAG() 函数中遇到语法错误?

java - Spring WebContent 资源 - ServletContext 外部访问

java - 使用自定义 View 解析器和自定义 View 的 Spring MVC AJAX 和 JSON

php - 从 2 个不同的表以用户或管理员身份登录

spring - @EnableTransactionManager java 配置