11.1 日志项处理和失败

一个常见的用例是需要在一个步骤中特殊处理错误,chunk-oriented步骤(从创建工厂bean的这个步骤)允许用户实现一个简单的ItemReadListener用例,用来监听读入错误,和一个ItemWriteListener,用来监听写出错误.下面的代码片段说明一个监听器监听失败日志的读写:

  1. >public class ItemFailureLoggerListener extends ItemListenerSupport {
  2. private static Log logger = LogFactory.getLog("item.error");
  3. public void onReadError(Exception ex) {
  4. logger.error("Encountered error on read", e);
  5. }
  6. public void onWriteError(Exception ex, Object item) {
  7. logger.error("Encountered error on write", ex);
  8. }
  9. }

在实现此监听器必须注册步骤:

  1. <step id="simpleStep">
  2. ...
  3. <listeners>
  4. <listener>
  5. &lt;bean class="org.example...ItemFailureLoggerListener"/>
  6. </listener>
  7. </listeners>
  8. </step>

记住,如果你的监听器在任何一个onError()方法中,它将在一个事务中回滚.如果在一个onError()方法中需要使用事务性的资源(比如数据库),可以考虑添加一个声明式事务方法(有关详细信息,请参阅Spring核心参考指南),并给予其传播属性REQUIRES_NEW值。