我想通过DataSourceInitializer实现数据库数据初始化。

我在Spring Boot main方法下面有这些方法,但是似乎根本没有执行(我试图故意删除字符只是为了触发一个确认执行的错误。什么都没发生。):

@ConfigurationProperties(prefix="spring.datasource")
@Bean
public DataSource getDataSource() {

    // i was hoping this was going to pull my current datasource, as
    // defined in application.properties
    return DataSourceBuilder
            .create()
            .build();
}


@Bean
public DataSourceInitializer dataSourceInitializer() {
    ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
    resourceDatabasePopulator.addScript(new ClassPathResource("/data/init/initData.sql"));

    DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();

    // the call to the above method
    dataSourceInitializer.setDataSource(getDataSource());


    dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator);

    return dataSourceInitializer;
}

更新:此问题旨在获得对使用中的数据源的引用。这个问题说明了如何以非常简单的方式初始化数据:
DataSourceInitializer is not working on Spring boot 1.2

最佳答案

如果您已经创建了一个数据源,它将位于spring容器中,因此:

@Autowired
DataSource dataSource;

应该做。

10-06 08:36