在Spring Boot中获取对当前活动的dataSource的引用

dev*_*r10 12 java spring datasource spring-boot

我想通过实现db数据init DataSourceInitializer.

我把这些作为方法就在我的Spring Boot主方法之下,但它似乎根本没有执行(我试图故意删除字符只是为了触发一个错误,这将确认执行.没有发生任何事情.):

@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;
}
Run Code Online (Sandbox Code Playgroud)

更新:此问题旨在获取对正在使用的dataSource的引用.这个问题解释了如何以一种非常简单的方式初始化数据: DataSourceInitializer不能在Spring boot 1.2上运行

Ess*_*Boy 23

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

@Autowired
DataSource dataSource;
Run Code Online (Sandbox Code Playgroud)

应该这样做.

  • Java魔术!谢谢你 在我的情况下,我有多种可能的自动装配选择,因此必须如下指定一个更精细的数据源类:@Autowired private HikariDataSource dataSource; (4认同)