为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 Spring Batch 框架连接到 Oracle 数据源

无法使用 Spring Batch 框架连接到 Oracle 数据源

温温酱 2021-07-07 09:04:44
我有一个小项目,用于学习 Spring Batch。我想从 Oracle 数据库读取数据并写入 XML 文件,但出现错误:创建名为“step1”的 bean 时出错:设置 bean 属性“jobRepository”时无法解析对 bean“jobRepository”的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:在类路径资源 [Spring/batch/config/spring-batch-contextOriginal.xml] 中定义名称为“jobRepository”的 bean 创建时出错:设置属性值时出错;嵌套异常是 org.springframework.beans.NotWritablePropertyException: Invalid property 'dataSource' of bean class [org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean]: Bean 属性 'dataSource' 不可写或具有无效的 setter 方法。setter 的参数类型是否与 getter 的返回类型匹配?我想我把所有东西都放进去了,但我认为这个错误最重要的东西是:spring-batch-context.xml和spring-datasource.xml。我错过了什么还是有什么问题?如果您需要更多详细信息,请告诉我。谢谢你。(我在不使用数据库的情况下尝试了该示例,并且效果很好。)spring-batch-context.xml:    <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"        xsi:schemaLocation="http://www.springframework.org/schema/beans                              http://www.springframework.org/schema/beans/spring-beans-3.2.xsd"> <import resource="../jobs/jobPerson.xml"/>  <import resource="../config/spring-datasource.xml" />    <!--  <context:annotation-config />    <tx:annotation-driven transaction-manager="transactionManager"/>a PlatformTransactionManager is still required     -->    <!-- JobRepository and JobLauncher are configuration/setup classes -->    <bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean" >       <property name="dataSource" ref="dataSource" />        <property name="transactionManager" ref="transactionManager" />       <property name="databaseType" value="oracle" />     </bean>
查看完整描述

1 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

在MapJobRepositoryFactoryBean不具备的属性dataSource,transactionManager和databaseType。您应该使用JobRepositoryFactoryBean代替MapJobRepositoryFactoryBean:


所以替换这个:


<!-- JobRepository and JobLauncher are configuration/setup classes -->

<bean id="jobRepository" class="org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean" >

   <property name="dataSource" ref="dataSource" /> 

   <property name="transactionManager" ref="transactionManager" />

   <property name="databaseType" value="oracle" /> 

</bean>

有了这个:


<!-- JobRepository and JobLauncher are configuration/setup classes -->

<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean" >

   <property name="dataSource" ref="dataSource" /> 

   <property name="transactionManager" ref="transactionManager" />

   <property name="databaseType" value="oracle" /> 

</bean>

它应该工作。


查看完整回答
反对 回复 2021-07-14
  • 1 回答
  • 0 关注
  • 227 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信