有没有纯注解为Spring留档?我看到的90%的文档都是为xml实现编写的。
我正在尝试覆盖默认的JobLauncher以能够传递JobParameters,但我添加到下面代码中的任何JobLauncher函数都被忽略,而是运行默认的SimpleJobLauncher。
我想用4个不同的作业参数启动同一作业的4个并发实例。这些参数应该告诉读取器从哪个目录读取。
我可以使用@Value注释为目录传递值,但这似乎只允许我设置一个默认值,在运行之间不会更改。
创建作业时无法配置作业(“World”被完全忽略)
@EnableBatchProcessing
@Configuration
public class BatchConfiguration{
private static final Logger log = LoggerFactory.getLogger(BatchConfiguration.class);
@Resource
public JobLauncher jobLauncher;
@Resource
public JobBuilderFactory jobBuilderFactory;
@Resource
public StepBuilderFactory stepBuilderFactory;
@Bean
@StepScope
ItemReader<Record> reader(@Value("") String directory) {
return new ExcelReader(directory);
}
@Bean
public ItemProcessor processor() {
return new ItemProcessor();
}
@Bean
public JobCompletionNotificationListener listener(){
return new JobCompletionNotificationListener();
}
@Bean
public Writer writer() {
Writer writer = new Writer();
return writer;
}
//Job Definition
@Bean
public Job job(JobCompletionNotificationListener listener) {
return jobBuilderFactory.get("job")
.listener(listener)
.flow(step1("World"))
.end()
.build();
}
@Bean
public Step step1(String directory) {
return stepBuilderFactory.get("step1")
.<Record, Record> chunk(10)
.reader(reader(directory))
.processor(processor())
.writer(writer())
.build();
}
}
我正在使用启动应用程序
SpringApplication.run(Application.class, args);
是否有更好的方法启动应用程序??
如果希望持久化sb元数据(推荐),可以更新transactionManager bean。
@Bean
public ResourcelessTransactionManager transactionManager() {
return new ResourcelessTransactionManager();
}
@Bean
public MapJobRepositoryFactoryBean mapJobRepositoryFactory(ResourcelessTransactionManager txManager)
throws Exception {
MapJobRepositoryFactoryBean factory = new MapJobRepositoryFactoryBean(txManager);
factory.afterPropertiesSet();
return factory;
}
@Bean
public JobRepository jobRepository(MapJobRepositoryFactoryBean factory) throws Exception {
return factory.getObject();
}
@Bean
public JobExplorer jobExplorer(MapJobRepositoryFactoryBean factory) {
return new SimpleJobExplorer(factory.getJobInstanceDao(), factory.getJobExecutionDao(),
factory.getStepExecutionDao(), factory.getExecutionContextDao());
}
@Bean
public SimpleJobLauncher jobLauncher(JobRepository jobRepository) {
SimpleJobLauncher launcher = new SimpleJobLauncher();
launcher.setJobRepository(jobRepository);
return launcher;
}
没有关于注释文档的消息,但我找到了传递参数的答案。因为我们不使用xml,所以可以使用AnnotationConfigApplicationContext,并指定最上面的包。然后,我们使用此上下文获取默认作业启动器,并在启动作业时传递参数。
ApplicationContext context = new AnnotationConfigApplicationContext("package.names.*");
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job = (Job) context.getBean("testJob");
Map<String, JobParameter> params = new HashMap<String, JobParameter>();
JobExecution execution = null;
JobParameters jp = null;
try {
params.put("directory", new JobParameter("testfolder"));
jp = new JobParameters(params);
execution = jobLauncher.run(job, jp);
} catch (Exception e) {
e.printStackTrace();
}
我在我的项目中集成了Spring Batch,我在运行JobLauncher时遇到了问题。 在我的类JobLauncher我有这个: 对于配置,我使用XML配置: 配置批处理。xml: 在作业配置中。我有: 当我在类JobLauncher中调试时,它会在jobLuancher中停止。运行,我也不例外,似乎SpringBatch无法识别reader和whriter!!有什么建议吗?
我有以下一个批处理的Spring配置。我在生产批处理中遇到过一个问题,当一个特定的用例抛出一个不可跳过的异常时。当我在集成测试中复制用例时,批处理行为仍然很奇怪。当我的batch.commit-interval属性大于1时,将触发重试机制,回滚未提交的块,并再次处理所有以前的记录。当batch-commit-interval设置为1时,一旦抛出不可跳过的异常,批处理就会失败。 我尝试了batch-
我无法覆盖REST API中默认的Spring Boot错误响应。我有以下代码 然后在我的REST api中抛出这个BusinessValidationException。这个处理程序被调用(我可以在调试器中看到它),但是我仍然得到缺省的Spring BootREST错误消息。是否有一种方法可以重写并仅将default用作后退?带有Groovy的Spring Boot版本1.3.2。最诚挚的问候
我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。
本文向大家介绍如何覆盖Spring Boot项目的默认属性?相关面试题,主要包含被问及如何覆盖Spring Boot项目的默认属性?时的应答技巧和注意事项,需要的朋友参考一下 这可以通过在application.properties文件中指定属性来完成。 例如,在Spring MVC应用程序中,您必须指定后缀和前缀。这可以通过在application.properties文件中输入下面提到的属性来
我有一个RESTAPI,我不想强迫客户端发送请求参数。我有将近400个api方法,我不想将所有参数设置为“required=false” 我想覆盖Spring RequestParam的默认行为。我想将RequestParam接口的“required”属性的默认值设置为“false”。 有什么方法可以覆盖它吗?如果我不能或这不是最佳实践,有什么方法可以解决上述问题。