2016-03-19 1 views
0

Ich bin neu zu Spring Batch und versuchen, benutzerdefinierte Datum (nicht heute Datum) an die Datei anhängen. Ich könnte Beispiele finden, um Job-Parameter & Jobausführungskontext in Dateischreiber Schritt zu bekommen. Aber ich konnte keine Lösung für mein Szenario finden. Kann mir jemand helfen? Gegeben: <bean id="abstractFileWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" abstract="true"> <property name="resource" value="file:\target\HelloWorld.{MMDDYYYY}.txt"/> <property name="shouldDeleteIfExists" value="true" />
</bean>
Spring Batch - Filewriter Angepasstes Datum an Dateiname anhängen

Above Datei Autor für mehrere Schritte Eltern ist, die Daten in derselben Datei anhängen.

Erwartete Ausgabe ist: Wenn {MMDDYYYY} auf 01152016 festgelegt ist, sollte der endgültige Name der Ausgabedatei HelloWord.01152016.txt lauten.

Wenn wir Ressource als Referenz anstelle von Wert übergeben müssen, teilen Sie bitte wie.

Bitte beraten.

Antwort

0

was, wenn Sie die folgende Zeile entfernen:

<property name="resource" value="file:\target\HelloWorld.{MMDDYYYY}.txt"/> 

und dann setResource im Code. So können Sie es im Code beliebig benennen.

String myPath = "/Users/myName/blahblahblah_" + myDate + ".txt"; 
Resource resource = new FileSystemResource(myPath); 
abstractFileWriter.setResource(resource); 

Ich habe keine Klasse oder Methode. Ich habe dies basierend auf der von Ihnen bereitgestellten Konfiguration und der Dokumentation geschrieben. Wenn ich eine Methode dafür schreiben würde, könnte ich etwas wie das folgende schreiben - aber es gibt Unbekannte wie welche Art von Objekten geben Sie an und fügen Sie Konverter hinzu?

@Autowired 
private abstractFileWriter; 

public <T> void writeFile(List<T> itemList, String fileName, Date date) throws Exception{ 
    JavaConfigApplicationContext context = new JavaConfigApplicationContext(...); 
    FlatFileItemWriter writer = context.getBean(FlatFileItemWriter.class, "abstractFileWriter"); 
    SimpleDateFormat sdf = new SimpleDateFormat("MMddyyyy"); 
    String stringDate = sdf.format(date); 
    fileName = fileName + stringDate + ".txt"; 
    Resource resource = new FileSystemResource(fileName); 
    writer.setResource(resource); 
    writer.write(itemList); 
} 
+0

Danke Neal. Ich habe auch einen alternativen Weg gefunden, dies zu erledigen. Erstellt eine util-Klasse und eine Methode, um den Tag basierend auf der Geschäftslogik zurückzugeben. Könnten Sie die gesamte Klasse und Methode posten? – Naran