2015-04-10 2 views
1

J'essaye d'employer ClassifierCompositeItemWriter, cette fois j'obtiens l'erreur ci-dessous.La propriété 'routerDelegate' a levé l'exception; BackToBackPatternClassifier

Propriété 'routerDelegate' exception de lancement; exception imbriquée est java.lang.IllegalStateException: Plus d'une méthode publique non vide détecté avec seul argument

Mon classificateur est:

public class ItemNameNodeClassifier implements Classifier<Master, String> { 

    @Override 
    public String classify(Master classifiable) {  
     return classifiable.getName(); 
    }  
} 

la configuration est:

<bean id="itemWriter" class="org.springframework.batch.item.support.ClassifierCompositeItemWriter"> 
     <property name="classifier" ref="nameIndicatorClassifier" /> 
    </bean> 

    <bean id="nameIndicatorClassifier" class="org.springframework.classify.BackToBackPatternClassifier"> 
     <property name="routerDelegate"> 
      <bean class="com.batch.ItemNameNodeClassifier"/> 
     </property> 
     <property name="matcherMap"> 
      <map> 
       <entry key="S" value-ref="itemWriter1" /> 
       <entry key="N" value-ref="itemWriter2" /> 
      </map> 
     </property> 
    </bean> 

Toute aide sur ce apprécié.

Cordialement, Shankar

+2

Il existe un ticket ouvert sur ce problème (https://jira.spring.io/browse/BATCH-2030) –

Répondre

1

J'ai utilisé @Classifier annotation au lieu de l'interface classificateur et il travaillait.

public class ItemNameNodeClassifier { 

    @Classifier 
    public String classify(Master classifiable) { 

     return classifiable.getName(); 
    } 

}