SpringBatch - Validate, 竟然敢摸清華女學生
前言
清華美院一名女學生稱男同學通過包的掩護摸自己的 PP 並將男同學的身份資訊公開到社交媒體, 導致男同學險些社會性死亡, 後來查了監控才證明了男同學的清白.
Spring Batch 可校驗性
我們經常需要大量的讀取資料, 其中有些資料可能不符合我們的預期, 比如從介面讀了個使用者列表, 年齡欄位存在負數, 這種可能就需要中斷程式或者跳過處理, 接著處理下一條
Spring Batch 可校驗性例子
reader 和 writer 都是原來的, 我們重新寫個 processor:
@Component
public class QingGirlProcessor implements ItemProcessor<Girl, String> {
@Override
public String process(Girl girl) throws Exception {
return girl.getName() + "說被摸了PP";
}
}
使用組合將驗證的 processor 和上面的業務的 processor 串聯起來:
@Configuration
public class ProcessorConfig {
@Autowired
private QingGirlProcessor qingGirlProcessor;
@Bean
public BeanValidatingItemProcessor<Girl> girlBeanValidatingItemProcessor() throws Exception {
BeanValidatingItemProcessor<Girl> validator = new BeanValidatingItemProcessor<>();
validator.setFilter(true);
validator.afterPropertiesSet();
return validator;
}
@Bean
public ItemProcessor<Girl, String> girlStringItemProcessor() throws Exception {
List<ItemProcessor> list = new ArrayList<>();
list.add(girlBeanValidatingItemProcessor());
list.add(qingGirlProcessor);
CompositeItemProcessor compositeItemProcessor =
new CompositeItemProcessor<>();
compositeItemProcessor.setDelegates(list);
compositeItemProcessor.afterPropertiesSet();
return compositeItemProcessor;
}
}
任務配置:
final String JOB_NAME = "demo4QingGirl";
List<Girl> girlList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
girlList.add(i % 2 == 0 ? new Girl() : new Girl("唐靖"));
}
final ListReader<Girl> reader = new ListReader<>(girlList);
final Job girlJob = jobBuilderFactory.get(JOB_NAME)
.flow(stepBuilderFactory.get(JOB_NAME)
.<Girl, String>chunk(2).reader(reader)
.processor(girlStringItemProcessor).writer(printWriter).build())
.end().build();
jobLauncher.run(girlJob, new JobParametersBuilder()
.addDate("start_time", new Date()).toJobParameters());
輸出:
唐靖說被摸了PP
唐靖說被摸了PP
唐靖說被摸了PP
唐靖說被摸了PP
唐靖說被摸了PP
總共十個只輸出了五個這就是我們的 Girl 類的作用了:
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Girl {
@NotBlank
private String name;
}
這樣就能保證只處理符合預期的資料了
微信公眾號:
相關文章
- Android點將臺:你敢摸我貓 [- IPC -]Android
- SpringBatch批量處理策略SpringBAT
- 一個資料庫死鎖竟然被測試發現了,這你敢信資料庫
- Chrome外掛:提醒你正在摸魚,摸魚的時候知道自己在摸魚,減少摸魚的時間和頻率。Chrome
- VALIDATE STRUCTUREStruct
- SpringBatch基本的批處理指導原則SpringBAT
- jQuery Validate success()jQuery
- Jquery--ValidatejQuery
- phper:敢問路在何方PHP
- iTerm2摸魚指北
- jQuery Validate addMethod()jQuery
- jQuery Validate errorPlacement()jQueryError
- jQuery Validate optional()方法jQuery
- jQuery Validate invalidHandler()jQuery
- 學習VALIDATE STRUCTUREStruct
- 上班摸魚與網路安全
- 使用Hadoop+Hbase+Hive+SpringBatch實現資料倉儲HadoopHiveSpringBAT
- Vue Element校驗validateVue
- jQuery Validate的format()用法jQueryORM
- jquery validate用法總結jQuery
- jQuery.validate 詳解jQuery
- jquery validate 詳解一jQuery
- jquery validate 詳解二jQuery
- 啪,還敢丟擲異常
- 不能摸魚的工作不是好工作?
- jQuery Validate highlight()jQuery
- jQuery Validate簡單介紹jQuery
- Leetcode-Validate BSTLeetCode
- jquery validate 手工驗證方法jQuery
- struts 自定義validate 問題
- 敢問路在何方——Flutter 路由淺析Flutter路由
- 真正的程式設計師,敢於直面枯燥的開發,敢於正視汙汙的段子程式設計師
- Laravel 修改 validate 提示資訊為中文Laravel
- jQuery Validate unhighlight()jQuery
- jQuery Validate依賴項介紹jQuery
- jquery.validate 表單驗證jQuery
- validate表單驗證外掛
- $request->validate()原始碼解讀原始碼