【发布时间】:2012-02-21 13:08:35
【问题描述】:
场景 1
跳过监听界面如下:
public interface SkipListener<T,S> extends StepListener {
void onSkipInRead(Throwable t);
void onSkipInProcess(T item, Throwable t);
void onSkipInWrite(S item, Throwable t);
}
这个接口最好用来记录跳过的项目和错误。
是否可以获取输入中跳过的项目的编号。例如如果输入中的第 10 项被跳过,我应该能够记录“第 10 项被跳过!”通过上面的监听器。
我需要这个,因为我将输入作为文件,其中行没有任何识别键。因此,仅通过注销项目,无法在文件中精确定位项目本身。
如果输入是数据库表而不是文件怎么办?是否也可以在那里获得跳过项目的位置编号?
场景 2
我的 bean 具有三个属性 1、2 和 3(所有字符串),其中通过适当的行映射器从文件中读取输入,然后在经过一些处理后将数据加载到数据库表中。
以下是来自处理器的代码块:
if(two.charAt(4) == '_')
{ // do some processing }
很明显,如果上面块文件中的字段二为空,则会抛出“字符串索引超出范围异常”并被跳过。
因此,在跳过侦听器中,我想要的是有关引发错误的列的信息。
由于名为 2 的字段出现错误,我想登录跳过侦听器的信息类似于“第 10 行的属性一抛出错误”字符串索引超出范围异常“或者如果可能,甚至更具体”第 10 行的属性 1 为空”,这对于不懂 Java 行话的企业来说更有意义。
希望我能澄清我的疑虑。
感谢阅读!
【问题讨论】:
-
“有没有可能”的问题有点模糊——通常的答案是肯定的,你能再具体一点吗?
-
@MichaelLange:请再次查看问题。我试图解释这些疑问。谢谢!
标签: spring-batch