Ich erhalte DataSource, das bei Verwendung von DataSouceBuilder nicht unterstützt wird.

Ich bin neu bei Spring-Batch (und Spring im Allgemeinen) und verfolge die Online-Dokumentation, um mir selbst beizubringen, was ich für diese Aufgabe brauche. Ich versuche, eine Verbindung zu einer DB2-Datenbank herzustellen.

Wenn ich die DB2-Verbindung mit XML wie folgt deklariere:

    <bean id="wcs_dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.ibm.db2.jcc.DB2Driver" />
    <property name="url" value="jdbc:db2://127.0.0.1/DEV" />
    <property name="username" value="user" />
    <property name="password" value="pass5" />
</bean>

Dann lade es in meinem Code so:

@Bean
    public JdbcCursorItemReader<Product> databaseItemReader() {             
        ApplicationContext context = 
                 new ClassPathXmlApplicationContext("context-datasource.xml");
        DataSource dataSource = (DataSource) context.getBean("wcs_dataSource");
        ((ConfigurableApplicationContext)context).close();

        JdbcCursorItemReader<Product> result = new JdbcCursorItemReader<Product>();
        result.setDataSource(dataSource);
        result.setSql(sqlString);
        result.setRowMapper(new ProductRowMapper());
        return result;
    }

Es funktioniert einwandfrei. Wie auch immer ich den DataSourceBuilder wie in den Beispielen gezeigt verwenden möchte, möchte ich letztendlich Folgendes erreichen:

@ConfigurationProperties(prefix="DEV.datasource")
public DataSource Wcs_DataSource(){
  return DataSourceBuilder.create().build();
}

Aber aus irgendeinem Grund funktioniert das nicht. Ich bekomm

Ursache: java.lang.IllegalStateException: Kein unterstützter DataSource-Typ gefunden

Ich habe auch versucht:

public DriverManagerDataSource dataSource() {               
    DataSourceBuilder DSBuilder = DataSourceBuilder.create();   
    DSBuilder.url("jdbc:db2://127.0.0.1/DEV");
    DSBuilder.username("user");
    DSBuilder.password("password");
    DSBuilder.driverClassName("com.ibm.db2.jcc.DB2Driver");
    DriverManagerDataSource result = (DriverManagerDataSource) DSBuilder.build();
    return result;      
}

Und ich bekomme den gleichen Fehler. Wenn ich es im Debugger ausführe, kann ich sehen, dass der Fehler bei .build () auftritt.

Ich bin sicher, ich vermisse etwas Leichtes, aber ich kann es nicht herausfinden.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage