如何在Spring Batch中使用范围Tomcat DataSource?

时间:2013-04-11 04:25:04

标签: spring datasource spring-batch

我目前正在使用Spring Batch从SQL服务器导入数据。为了使数据源可配置,我需要“步进范围”数据源bean。但是,这让我很担心。如果执行连接池的数据源bean是步骤范围的,那么它如何管理池中的连接,并且使用它甚至有好处。

我的数据源配置如下:

<bean id="dataSourceMssql" class="org.apache.tomcat.jdbc.pool.DataSource" scope="step">
    <property name="driverClassName" value="${batch.mssql.driver}" />
    <property name="username" value="${batch.mssql.user}" />
    <property name="password" value="${batch.mssql.password}" />
    <property name="removeAbandoned" value="true" />
    <property name="removeAbandonedTimeout" value="3610" />
    <property name="url"
        value="${batch.mssql.connect}#{jobParameters['dburl']}:#{jobParameters['port']}/#{jobParameters['databaseName']}" />
</bean>

为什么步骤范围?因为我需要检索jobParameters来配置数据源。

我想知道什么? 连接池是否仍会发生? (也许豆类资源保持活力并被收回)

我很感激帮助。

1 个答案:

答案 0 :(得分:0)

范围“步骤”仅适用于spring批处理bean。其他bean(Spring)只知道范围:单例,原型,请求或会话。

处理此问题的常规方法是在applicatioonContext.xml读取的属性文件中设置这些参数。

JobParameters用于传递与Job相关的参数(路径,文件名,日期,seqNo等),因为具有相同JobParameters的作业将无法运行两次。

编辑:你的工作是多线程的吗?因为创建的大多数作业都是单线程的!如果你的工作实际上是单线程,我会问自己为什么需要联合连接!

问候