【发布时间】:2014-05-07 08:52:25
【问题描述】:
我开始使用 Spring Batch,我有一个关于何时使用步骤、决定器和块的问题。
给定以下输入:
<UserAuthorizationEvent>
<UserAuthorization>
<Action>ADD</Action>
<UserName>Name1</UserName>
<!-- more properties here -->
</UserAuthorization>
<UserAuthorization>
<Action>UPDATE</Action>
<UserId>456</UserId>
<UserName>NewName2</UserName>
<!-- more properties here -->
</UserAuthorization>
<UserAuthorization>
<UserId>789</UserId>
<Action>DELETE</Action>
</UserAuthorization>
<!-- 1000 or more UserAuthorization here -->
</UserAuthorizationEvent>
对于文件中的每个<UserAuthorization>,我将根据<Action> 在数据库上执行查询之前验证不同的业务规则。 (例如:对于 ADD,验证 UserName 在数据库中是唯一的,并且它只由字母组成,或者对于 DELETE,验证 id 是否存在于表中)
然后<Action> 值将决定我是否需要在数据库中插入、更新或删除一个值。 (操作可以有其他值,例如 UPDATE_RIGHTS 或 RESET_PASSWORD)
什么是最好的?
我是否定义了这样的工作:
<job id="myJob" xmlns="http://www.springframework.org/schema/batch">
<step id="step1">
<tasklet>
<chunk reader="itemReader" processor="itemProcessor" writer="itemWriter" commit-interval="2" />
</tasklet>
</step>
</job>
- itemReader 将读取 xml 文件并一次返回一个
<UserAuthorization>。 - itemProcessor 将充满
ifs 以根据其<Action>值验证当前项目的业务规则 - itemWriter 会将项目保存在数据库中。如果我想在执行查询之前执行更多操作,是否也需要在此处添加逻辑?
这样做,我担心我没有正确使用 Spring 批处理。
这样做对吗?
我可以使用几个步骤和决策器来实现批处理的所有逻辑吗? 你有例子吗?
【问题讨论】:
标签: java spring-batch