我目前正在使用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来配置数据源。
我想知道什么? 连接池是否仍会发生? (也许豆类资源保持活力并被收回)
我很感激帮助。
答案 0 :(得分:0)
范围“步骤”仅适用于spring批处理bean。其他bean(Spring)只知道范围:单例,原型,请求或会话。
处理此问题的常规方法是在applicatioonContext.xml读取的属性文件中设置这些参数。
JobParameters用于传递与Job相关的参数(路径,文件名,日期,seqNo等),因为具有相同JobParameters的作业将无法运行两次。
编辑:你的工作是多线程的吗?因为创建的大多数作业都是单线程的!如果你的工作实际上是单线程,我会问自己为什么需要联合连接!问候