Я новичок в Spring-Batch (и Spring в целом) и выполняю следующую документацию, чтобы научить себя, что мне нужно для выполнения этой задачи. Я пытаюсь подключиться к базе данных DB2.Я получаю DataSource не поддерживается при использовании DataSouceBuilder
Если я объявляю соединение DB2 с XML, как это:
<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().
Уверен, что мне не хватает чего-то легкого, но я не могу понять это.
Прежде всего, '' '' 'возвращает' DataSource', и это должен быть тип, который вы возвращаете, не отсылайте его к 'DriverManagerDataSource', так как это приведет к сбою. Для использования 'DataSourceBuilder' вам нужно иметь' commons-dbcp', или 'tomcat-jdbc' или' hikaricp' на вашем пути к классам, иначе это не сработает. У меня нет одного из них, которое вы получите, когда получите сообщение. Другое дело, вам действительно нужно собственное пространство имен ('DEV.datasource'), почему бы просто не использовать значение по умолчанию? –
Пространство имен будет потому, что будет больше одного источника данных. Это следующая документация: https://docs.spring.io/spring-boot/docs/current/reference/html/howto-data-access.html Я пробовал это без с DriverManagerDataSource с теми же результатами. Был еще один способ, которым я смотрел, что это использовало. Поэтому я попробовал (схватил за соломинку к этому моменту), но это не помогло. Я удалил его с момента публикации. НО добавление commons-dbcp к моим зависимостям действительно сработало! Благодаря! – VydorScope