我正在编写Spring Batch应用程序并将Spring Beans配置拆分为多个文件;
之所以这样,是因为我希望在开发/测试/生产设置之间更改数据源,并保存重复写入相同的bean定义。
问题在于我希望启动Spring Batch应用程序。在阅读这里的说明http://static.springsource.org/spring-batch/reference/html/configureJob.html#runningJobsFromCommandLine时,它假设每个作业有一个Spring配置文件,但这不是我希望的方式。
如何从命令行运行Spring Batch作业,该命令行使用多个bean配置文件?
答案 0 :(得分:1)
你总是可以导入上下文:
所以在batch/jobs/myJob.xml
:
<import resource="batch/launchContext.xml" />
<import resource="batch/common.xml" />
<import resource="dataSource.xml" />
编辑:
您可以使用属性占位符来外部化您的数据源属性定义:
在dataSource.xml
:
<bean id="dataSource" destroy-method="close"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<context:property-placeholder
location="classpath:com/foo/jdbc.properties"
systemPropertiesMode="2" /> <!-- 2 means override -->
您的jdbc.properties
将包含默认值:
jdbc.driverClassName=org.hsqldb.jdbcDriver
jdbc.url=jdbc:hsqldb:hsql://production:9002
jdbc.username=sa
jdbc.password=root
但是因为使用“覆盖”系统属性模式,可以在运行时指定这些:
java -Djdbc.url=jdbc:hsqldb:hsql://dev:9002 ...
另见here