0

我目前正在使用 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 来配置数据源。

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

我很感激帮助。

4

1 回答 1

0

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

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

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

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

问候

于 2013-04-11T14:59:33.493 回答