복붙노트

[SPRING] DataSource가 DataSourceBuilder를 사용할 때 지원되지 않음

SPRING

DataSource가 DataSourceBuilder를 사용할 때 지원되지 않음

Spring-Batch (그리고 Spring은 일반적으로)에 익숙하지 않으며,이 작업을 수행하는 데 필요한 것을 스스로 가르치기 위해 온라인 문서를 따르고 있습니다. DB2 데이터베이스에 연결하려고합니다.

다음과 같이 XML로 DB2 연결을 선언하면 :

    <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>

그럼 내 코드에로드 :

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

그것은 완벽하게 작동합니다. 예제와 같이 DataSourceBuilder를 사용하고 싶다면 궁극적으로 다음과 같이하고 싶습니다.

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

그러나 어떤 이유로 그것은 작동하지 않습니다. 나는 얻다

원인 : java.lang.IllegalStateException : 지원되는 DataSource 유형이 없습니다.

나는 또한 시도했다 :

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

그리고 나는 같은 오류를 얻는다. 디버거에서 실행할 경우 .build () 오류가 발생하는 것을 볼 수 있습니다.

나는 쉬운 것을 놓치고 있다고 확신하지만, 나는 그것을 이해할 수 없다.

해결법

  1. ==============================

    1.M. Deinum이 대답했습니다. 내 의존성에서 commons-dbcp가 누락되었습니다! 나는 그것이 그와 같이 쉬운 무엇인가라고 상상했다.

    M. Deinum이 대답했습니다. 내 의존성에서 commons-dbcp가 누락되었습니다! 나는 그것이 그와 같이 쉬운 무엇인가라고 상상했다.

  2. ==============================

    2.제 경우에는 spring-boot-startter-jdbc 의존성 작업을 추가하십시오.

    제 경우에는 spring-boot-startter-jdbc 의존성 작업을 추가하십시오.

       <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-jdbc</artifactId>
       </dependency>
    
  3. from https://stackoverflow.com/questions/34790924/i-am-getting-datasource-not-supported-when-using-datasoucebuilder by cc-by-sa and MIT license