在 Spring Boot 中获取对当前活动数据源的引用 [英] Get a reference to currently active dataSource in Spring Boot

查看:152
本文介绍了在 Spring Boot 中获取对当前活动数据源的引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想通过DataSourceInitializer实现db data init.

I want to implement db data init via DataSourceInitializer.

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

I have these as methods just below my Spring Boot main method, but it seems that it doesn't get executed at all (I tried with intentional removal of characters just to trigger an error which would confirm the execution. Nothing happened.):

@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 不适用于 Spring boot 1.2>

UPDATE: This question was aimed at getting a reference to the dataSource in use. This question explains how to init the data in a very simple way: DataSourceInitializer is not working on Spring boot 1.2

推荐答案

如果你已经创建了一个数据源,它将在 spring 容器中,所以:

If you have a datasource already created it will be in the spring container, so:

@Autowired
DataSource dataSource;

应该这样做.

这篇关于在 Spring Boot 中获取对当前活动数据源的引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆