sql >> データベース >  >> RDS >> Mysql

デフォルトのBatchConfigurerを使用するには、コンテキストに含まれるデータソースが1つだけである必要があります。

    M. Deinumが提案したように、データソースの構成も別のファイルに入れます。

    それ以外に、構成ファイルには次の問題があります。

    1. SpringBatchは、「dataSource」という名前のデータソースを探します(大文字のSに注意してください)。見つからない場合は、見つかったデータソースを探します。ただし、複数検出された場合は、例外->観察したものがスローされます。

    2. 構成ファイルで、2つのデータソースを作成し、1つを挿入します(@Autowired Datasource dataSourceSecond)。この名前のデータソースがないため、これにより次の問題が発生します。 (データソース「secondaryDataSource」と「primaryDataSource」のみを定義しました)。これも例外につながります。

    構成を整理する方法は次のとおりです

    @Configuration
    public DatasourceConfiguration {
    
        @Bean
        @ConfigurationProperties(prefix="spring.seconddatasource")
        public javax.sql.DataSource secondaryDataSource() {
            return DataSourceBuilder.create().build();
        }
    
        // note the new name: dataSource -> this is the name springBatch is looking for
        @Bean
        @ConfigurationProperties(prefix="spring.datasource")
        public javax.sql.DataSource dataSource() {
            return DataSourceBuilder.create().build();
        }
    }
    
    
    @Configuration
    @EnableBatchProcessing
    @Import(DatasourceConfiguration.class)
    public class BatchConfiguration {
    
        @Autowired
        public JobBuilderFactory jobBuilderFactory;
    
        @Autowired
        public StepBuilderFactory stepBuilderFactory;
    
        // note the name
        @Autowired
        public DataSource secondaryDataSource;
    
    
        @Bean
        public JdbcCursorItemReader<User> reader()
        {
            JdbcCursorItemReader<User> reader=new JdbcCursorItemReader<>();
    
            // note the name
            reader.setDataSource(secondaryDataSource);
            reader.setSql("Select ACCT_ID from ACCT_table FETCH FIRST 100 ROWS ONLY");
            reader.setRowMapper(new UserRowerMapper());
            return reader;
        }
    
       ...
    

    同様の質問に対するより徹底的な回答も書いています:バッチがデータソースを使用しないSpringバッチプロジェクトを作成したい




    1. Javaを使用してSSH経由でMySQLに接続する

    2. MySQLがそれらを処理できるように、複数のパラメーターを使用して文字列をフォーマットします

    3. Android Studio getSlotFromBufferLocked:不明なバッファーエラー

    4. タイムゾーンのOracle日付フォーマットマスクとは何ですか?