我有一个弹簧批处理程序,它从一个数据库读取并写入文件。
它有项目阅读器如下:
<beans:bean id="myItemReader" class="org.springframework.batch.item.database.JdbcCursorItemReader">
<beans:property name="dataSource" ref="jobRepository-dataSource" />
<beans:property name="sql" value="${dbTofileDataReadSQL}"/>
<beans:property name="rowMapper">
<beans:bean class="com.mypackage.MyRowMapper" />
</beans:property>
</beans:bean>
sql类似于:
select one, two, three, four from myTable where business_date='12/12/11'
此行将进入我的属性文件:
dbTofileDataReadSQL = select one, two, three, four from myTable where business_date='12/12/11'
如何在项目阅读器中在运行时传递此业务日期,以便将其添加到项目阅读器中。
感谢您阅读!!
答案 0 :(得分:3)
您可以使用late-binding with step scope或简单的PropertyPlaceholderConfigurer
<bean id="placeholderProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="path to your properties file, either classpath: ... or c:/... " />
</bean>
如果您需要在属性文件中添加多行条目,请按照
进行操作# sql, multiline property with \
sql=\
SELECT \
ID, \
NAME \
FROM TEST \
ORDER BY ID
或者从Spring 3开始,您可以使用SpEL:
<util:properties id="myProperties" location="..." />
...
<beans:bean ...
<beans:property name="sql" value="#{myProperties.sql}"/>
</beans:bean>
答案 1 :(得分:0)
在您的财产中拥有占位符
dbTofileDataReadSQL = select one, two, three, four from myTable where business_date={0}
并查看this answer,了解如何使用MessageFormat
类
使用Spring,如果您将该属性文件添加到资源包中,
您可以使用ApplicationContext#getMessage
String getMessage(String code,
Object[] args,
Locale locale)
throws NoSuchMessageException