2016-03-19 49 views
0

我是Spring批處理新手,嘗試將自定義日期(不是今天的日期)附加到輸出文件。我可以在文件編寫器步驟中找到樣本以獲取作業參數&作業執行上下文。但找不到解決方案。有人可以幫助這一點。 鑑於: <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>
春天批處理 - Filewriter將自定義日期附加到文件名

上面的文件編寫器是幾個步驟,將數據追加到同一個文件的父級。

預期輸出爲: 如果{MMDDYYYY}設置爲01152016,則最終輸出文件名應該是HelloWord.01152016.txt。

如果我們需要通過引用而不是值來傳遞資源,請分享如何。

請指教。

回答

0

如果去掉下面一行的內容:

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

,然後在代碼setResource。這樣你就可以在代碼中任意命名。

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

我沒有類或方法。我基於你提供的配置和文檔編寫了這個。如果我要爲此編寫一個方法,我可能會寫下類似的內容 - 但是還有什麼未知數,比如你傳入什麼類型的對象,並且是否添加了轉換器?

@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

謝謝尼爾。我也找到了替代方法來完成這件事。根據業務邏輯創建util類和方法以返回一天。你可以發佈整個課程和方法嗎? – Naran

相關問題