バッチジョブをファイナライズし、データをデータベースに書き込むために、データソースを使用するSpringブート(バッチ指向)アプリケーションがあります。Springブート(バッチ) - データソースの挿入
spring:
datasource:
url: jdbc:h2:mem:JavaSpringBootBatch
username: sa
password:
profiles: # default, development, production
active: default, development
---
spring:
h2:
# ...config/settings here
profiles: development
---
spring:
datasource:
# ...datasource config here
profiles: production
私は春の設定ファイルのいずれかにデータソースを注入しようとすると、問題は次のとおりです:
@Configuration
public class PlayerBatchConfig {
...
@Bean
public ItemWriter<Player> writer(final DataSource dataSource) {
final JdbcBatchItemWriter<Player> jdbcItemWriter = new JdbcBatchItemWriter<>();
...
jdbcItemWriter.setDataSource(dataSource);
jdbcItemWriter.setSql(sql.toString());
return jdbcItemWriter;
}
}
は、私のようなapplication.yml
内で定義されたデータソース(複数可)を持っています。それは私にそれを教えてくれる:
autowireできませんでした。 'DataSource'型のBeanは複数あります。
豆: データソース(DataSourceConfiguration.class) データソース(EmbeddedDataSourceConfiguration.class)
私はまたのようなデータソースを注入しようとしません:
@Configuration
public class PlayerBatchConfig {
@Bean
@ConfigurationProperties(prefix = "datasource")
public DataSource dataSource() {
return DataSourceBuilder.create().build();
}
...
}
...しかし、何の運:(2つのデータソースに関する問題は最終的に消え去るが、
どのようにしてそれを回避するかの手がかり
私は "spring.h2.console.enabled = true"と "spring.h2.console.path =/h2-console"はh2データベースを有効にし、別のデータソースを明示的に再度定義し、両方とも "開発"プロファイル。したがって、コンテナは複数のデータソースとして表示されます。 – surya
それだけではなく、 'default'プロファイルチャンクの実際の定義です。 'http://.../ h2-console'をブラウズして' development'を使うと、H2コンソールにアクセスすることができます –