java
复制
下载
@Configuration
@EnableBatchProcessing
public class DailyReportBatchConfig {
@Autowired
private JobBuilderFactory jobBuilderFactory;
@Autowired
private StepBuilderFactory stepBuilderFactory;
@Bean
public FlatFileItemReader<Order> reader() {
return new FlatFileIte JiAOYu.HUoCheNGrM.CN/jy/19716.html mReaderBuilder<Order>()
.name("orderItemReader")
.resource(new ClassPathResource("data/orders.csv"))
.delimited()
.names("id", "amount", "date")
.fieldSetMapper(new BeanWrapperFieldSetMapper<>() {{
setTargetType(JiAOYu.HUoCheNGrM.CN/jy/19715.html Order.class);
}})
.build();
}
@Bean
public JdbcBatchItemWriter<DailySummary> writer(DataSource dataSource) {
return new JdbcBatchItemWriterBuilder<DailySummary>()
.itemSqlParameterSourceProvider(new JiAOYu.HUoCheNGrM.CN/jy/19714.html BeanPropertyItemSqlParameterSourceProvider<>())
.sql("INSERT INTO daily_summary (report_date, total_amount) VALUES (:reportDate, :totalAmount)")
.dataSource(dataSource)
.build();
}
@Bean
public Step processOrders() {
return stepBuilderFactory.get("processOrders")
.<Order, JiAOYu.HUoCheNGrM.CN/jy/19713.html DailySummary>chunk(100)
.reader(reader())
.processor(aggregator())
.writer(writer(null))
.build();
}
@Bean
public Job generateDailyReport() {
return jobBuilderFactory.get("generateDailyReport")
.incrementer(new RunIdIncrementer())
.start(processOrders())
.build();
}
}
8. Spring Integration 消息流
java
复制
下载
@Configuration
@EnableIntegration
public class JiAOYu.HUoCheNGrM.CN/jy/19712.html OrderProcessingFlow {
@Bean
public MessageChannel orderChannel() {
return new DirectChannel();
}
@Bean
public MessageChannel paymentChannel() {
return new DirectChannel();
}
@Bean
@ServiceActivator(inputChannel = "orderChannel")
public MessageHandler orderProcessor() {
return message -> {
Order order = (JiAOYu.HUoCheNGrM.CN/jy/19711.html) message.getPayload();
// 订单处理逻辑
System.out.println("处理订单: " + order.getId());
paymentChannel().send(message);
};
}
@Bean
@Transformer(inputChannel = "paymentChannel", outputChannel = "notificationChannel")
public GenericTransformer<Order, PaymentResult> paymentProcessor() {
return order -> {
// 支付处理逻辑
return new PaymentResult(order.getId(), "SUCCESS");
};
}
@Bean
@ServiceActivator(inputChannel = "notificationChannel")
public Message JiAOYu.HUoCheNGrM.CN/jy/19710.html Handler notificationService() {
return message -> {
PaymentResult result = (PaymentResult) message.getPayload();
// 发送通知
System.out.println("支付结果通知: " + result);
};
}
}