आपको ClassifierCompositeItemWriter
वस्तुओं को वर्गीकृत करने और प्रत्येक प्रकार को उसकी संगत फ़ाइल में लिखने के लिए। यहां एक त्वरित उदाहरण दिया गया है जिसे आप आजमा सकते हैं:
आयात करें .batch.core.configuration.annotation.EnableBatchProcessing;import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;import org.springframework.batch. launch.JobLauncher;import org.springframework.batch.item.ItemReader;import org.springframework.batch.item.ItemWriter;import org.springframework.batch.item.file.FlatFileItemWriter;import org.springframework.batch.item.file. Builder.FlatFileItemWriterBuilder;import org.springframework.batch.item.file.transform.PassThroughLineAggregator;import org.springframework.batch.item.support.ClassifierCompositeItemWriter;import org.springframework.batch.item.support.ListItemReader;import org.spring.spring.spring. वर्गीकृत करें। वर्गीकरण; आयात org.springframew ork.context.ApplicationContext;import org.springframework.context.annotation.AnnotationConfigApplicationContext;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.io.FileSystemResource; @Configuration@EnableBatchProcessingpublic class MyJob { Private JobBuilderFactory jobBuilderFactory; निजी StepBuilderFactory stepBuilderFactory; सार्वजनिक MyJob (JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) { this.jobBuilderFactory =jobBuilderFactory; this.stepBuilderFactory =stepBuilderFactory; } @बीन सार्वजनिक ItemReader<व्यक्ति> itemReader() { व्यक्ति foo1 =नया व्यक्ति (); foo1.setId (1); foo1.setName ("foo1"); व्यक्ति foo2 =नया व्यक्ति (); foo2.setId (2); foo2.setName ("foo2"); व्यक्ति बार1 =नया व्यक्ति (); bar1.setId(3);bar1.setName("bar1"); व्यक्ति बार2 =नया व्यक्ति (); bar2.setId(4);bar2.setName("bar2"); वापसी नई ListItemReader<>(Arrays.asList(foo1, foo2, bar1, bar2)); } @बीन पब्लिक क्लासिफायर कॉम्पोजिटइटमवाइटर <व्यक्ति> क्लासिफायर कॉम्पोजिटइटमवाइटर (आइटमवाइटर <व्यक्ति> फूइटमवाइटर, आइटमवाइटर <पर्सन> बारइटमवाइटर) { क्लासिफायर कॉम्पोजिटइटमवाइटर <व्यक्ति> क्लासिफायर कॉम्पोजिटइटमवाइटर =नया क्लासिफायर कॉम्पोजिटइटमवाइटर <>(); classifierCompositeItemWriter.setClassifier((Classifier>) व्यक्ति -> {अगर (person.getName().startsWith("foo")) {वापसी fooItemWriter; } और {वापसी barItemWriter; }}); रिटर्न क्लासिफायरकंपोजिटइटमवाइटर; } @Bean public FlatFileItemWriter fooItemWriter() { वापसी new FlatFileItemWriterBuilder() .name("fooItemWriter") .resource(new FileSystemResource("foos.txt")) .lineAggregator(new PassThroughLineAggregator<>()) ।बनाना(); } @Bean public FlatFileItemWriter barItemWriter() { रिटर्न new FlatFileItemWriterBuilder() .name("barItemWriter") .resource(new FileSystemResource("bars.txt")) .lineAggregator(new PassThroughLineAggregator<>()) ।बनाना(); } @ बीन पब्लिक स्टेप डेटाएक्सट्रैक्शनस्टेप () {रिटर्न स्टेपबिल्डरफैक्टरी.गेट ("डेटाएक्सट्रैक्शनस्टेप")। <व्यक्ति, व्यक्ति> चंक (2)। रीडर (आइटम रीडर ())। स्ट्रीम (fooItemWriter ()) .stream (barItemWriter ()) .build (); } @ बीन पब्लिक जॉब डेटा एक्सट्रैक्शनजॉब () {रिटर्न जॉबबिल्डर फैक्ट्री.गेट ("डेटाएक्सट्रैक्शनजॉब")। स्टार्ट (डेटाएक्सट्रैक्शनस्टेप ()) .बिल्ड (); } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) अपवाद फेंकता है { ApplicationContext संदर्भ =नया एनोटेशनकॉन्फिगएप्लिकेशन कॉन्टेक्स्ट (MyJob.class); जॉब लॉन्चर जॉब लॉन्चर =संदर्भ। गेटबीन (जॉब लॉन्चर। क्लास); जॉब जॉब =संदर्भ। गेटबीन (जॉब। क्लास); jobLauncher.run (नौकरी, नया जॉब पैरामीटर ()); } सार्वजनिक स्थैतिक वर्ग व्यक्ति { निजी इंट आईडी; निजी स्ट्रिंग नाम; पब्लिक पर्सन () { } पब्लिक पर्सन (इंट आईडी, स्ट्रिंग नेम) {this.id =id; यह नाम =नाम; } सार्वजनिक int getId () {रिटर्न आईडी; } सार्वजनिक शून्य setId (int id) {this.id =id; } सार्वजनिक स्ट्रिंग getName () {वापसी का नाम; } सार्वजनिक शून्य सेटनाम (स्ट्रिंग नाम) { यह नाम =नाम; } @ ओवरराइड पब्लिक स्ट्रिंग टूस्ट्रिंग () {रिटर्न "पर्सन{" + "आईडी =" + आईडी + ", नाम ='" + नाम + '\'' + '}'; } }}
यह नमूना कुछ व्यक्ति
पढ़ता है आइटम और नाम foo*
. के साथ लिखता है करने के लिए foos.txt
और जिनका नाम bar*
. है करने के लिए bars.txt
।
आशा है कि यह मदद करता है।