Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

डिफ़ॉल्ट बैचकॉन्फ़िगरर का उपयोग करने के लिए संदर्भ में एक से अधिक डेटा स्रोत नहीं होना चाहिए, पाया गया 2

जैसा कि एम. डीनम ने सुझाव दिया था, मैं डेटा स्रोतों के कॉन्फ़िगरेशन को भी एक अलग फ़ाइल में रखूंगा।

इसके अलावा, आपकी कॉन्फ़िगरेशन फ़ाइल में निम्न समस्याएं हैं:

  1. स्प्रिंगबैच "डेटासोर्स" नामक डेटा स्रोत की तलाश करता है (पूंजी एस पर ध्यान दें)। अगर उसे कोई नहीं मिलता है, तो वह उसे मिलने वाले किसी भी डेटा स्रोत की तलाश करता है। हालांकि, अगर इसे एक से अधिक मिलते हैं, तो यह एक अपवाद देता है -> जिसे आपने देखा था।

  2. अपनी कॉन्फ़िगरेशन फ़ाइल में, आप दो डेटा स्रोत बनाते हैं और एक (@Autowired Datasource dataSourceSecond) इंजेक्ट करते हैं। यह अगली समस्या का कारण बनेगा, क्योंकि आपके पास इस नाम का कोई डेटा स्रोत नहीं है। (आपने केवल डेटा स्रोत "सेकेंडरीडेटासोर्स" और "प्राथमिकडेटा स्रोत" को परिभाषित किया है)। इससे अपवाद भी होगा।

यहां बताया गया है कि मैं अपने कॉन्फ़िगरेशन को कैसे व्यवस्थित करूंगा

@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;
    }

   ...

मैंने इसी तरह के प्रश्न का अधिक गहन उत्तर भी लिखा है:मैं एक स्प्रिंग बैच प्रोजेक्ट बनाना चाहूंगा जहां बैच मेरे डेटा स्रोत का उपयोग न करे




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एकाधिक रूप और एक PHP रिसीवर

  2. 9 वास्तव में उपयोगी MySQL दिनांक फ़ंक्शन जो याद रखने में आसान हैं

  3. WooCommerce:डेटाबेस में उत्पादों को ढूँढना

  4. 1093 MySQL तालिका में त्रुटि दो बार निर्दिष्ट है

  5. क्रम से... संख्या? आईपी ​​​​पते को सॉर्ट करने में मेरी सहायता करें