我想通过DataSourceInitializer
实现db data init。
我的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;
}
更新:这个问题的目的是获取对正在使用的数据源的引用。这个问题解释了如何以一种非常简单的方式初始化数据:DataSourceInitializer不适用于Spring boot 1.2
您的意思是,您的应用程序主方法下面有这些方法,并且您没有自动连接数据源,因此您直接创建了一个实例,因此没有使用属性。您需要使用Spring创建的singleton对象。为了做到这一点,你有两种可能性:
第一个选项,也是您应该使用的选项,是声明一个配置类来创建您的bean:
@Configuration
public class DatasourceConfig
{
@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;
}
}
使用@Configuration
,甚至直接调用该方法,因为配置类在启动时是用CGLIB
子类化的,所以您得到的是Spring创建的对象。
关于基于Java的配置如何在内部工作的更多信息
第二个选项是在第二种方法中自动连接数据源:
@Bean
@Autowired
public DataSourceInitializer dataSourceInitializer(DataSource myDatasource) {
ResourceDatabasePopulator resourceDatabasePopulator = new ResourceDatabasePopulator();
resourceDatabasePopulator.addScript(new ClassPathResource("/data/init/initData.sql"));
DataSourceInitializer dataSourceInitializer = new DataSourceInitializer();
dataSourceInitializer.setDataSource(myDatasource);
dataSourceInitializer.setDatabasePopulator(resourceDatabasePopulator);
return dataSourceInitializer;
}
如果已经创建了一个数据源,它将位于spring容器中,因此:
@Autowired
DataSource dataSource;
我应该这么做。
问题内容: 情况如下: 在线程中触发事件。 需要检索当前活动。 然后在该活动上创建一个对话框并显示。 问题:据我搜索,还没有办法在前台检索当前活动。 额外信息:这需要能够在多个活动中进行处理。因此,它可以在活动A或B或C中弹出。 问题答案: 我不确定这是否是您要寻找的东西,但这似乎很简单。http://iamvijayakumar.blogspot.com/2011/09/get- current
它可能得到当前的活动选项卡在火狐使用硒?我创建的应用程序是半自动的(用户正在打开标签,如果他想转储其中一个,他只是点击热键)。 但我有问题,当用户打开多个标签,我需要知道哪一个我应该切换到转储网站。
我有一个猫头鹰旋转木马,每张幻灯片有一个项目,画廊中的每个图像都有不同的尺寸和纵横比。 我想要的是获得当前或活动图像的宽度和高度。 我试过: 但是,这将返回图像以前的维度,而不是它所更改的图像。
我的应用程序中有一个带有待定意图集的通知。当我使用我的应用程序时,我会进行几个活动。登录- 我想带回用户将其带回时位于顶部的活动。换句话说,我想模拟行为- 有办法做到这一点吗? 谢谢
问题内容: 参考先前提出的问题,我想知道如何获取当前活动文档的标题。 我尝试了上述问题的答案中提到的脚本。这有效,但仅给我应用程序的名称。例如,我正在写这个问题:启动脚本时,它将为我提供应用程序的名称,即“ Firefox”。这很干净,但并没有真正的帮助。我想记录我当前活动文档的标题。看到图像。 Firefox标题http://img.skitch.com/20090126-nq2egknhjr9
我想在带有toast的活动上显示viewpager2中的所选项目描述。 如何从viewpager获取数据? 我可以显示项目位置,但我想用toast显示所选项目描述。 对不起,我的英语不好。 谢谢你的帮助。 我的代码如下所示; array\u str\u值: 我的适配器: PagerM: