我正在使用Spring batch编写一个批处理,并试图将一个作业参数传递给item reader bean定义,但是当我执行该批处理时,我总是得到以下错误:
org.springframework.expression.spel.SpelEvaluationException: EL1027E:(pos 13): Indexing into type 'org.springframework.batch.core.JobParameters' is not supported
/**
* Job producing an XML file aimed at synchronizing Appipay data with ForHRM data
*
* @author francois.dupire
*/
@Configuration
@Import(BatchConfiguration.class)
@ComponentScan(basePackageClasses = BusinessObjectServiceImpl.class)
public class ForHRMToAppipayDescriptiveDataSyncJobConfiguration {
/*
* Constants
*/
public static final String JOB_NAME = "forHRMToAppipaySyncJob";
private static final String FORHRM_TO_APPIPAY_SYNC_STEP = "forHRMToAppipaySyncStep";
private static final int CHUNK_SIZE = 10;
/*
* Fields
*/
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
/*
* Constructors
*/
@Autowired
public ForHRMToAppipayDescriptiveDataSyncJobConfiguration(JobBuilderFactory jobBuilderFactory, StepBuilderFactory stepBuilderFactory) {
this.jobBuilderFactory = jobBuilderFactory;
this.stepBuilderFactory = stepBuilderFactory;
}
/*
* Job
*/
@Bean
public Job forHRMToAppipaySyncJob(Step forHRMToAppipaySyncStep) {
return jobBuilderFactory
.get(JOB_NAME)
.start(forHRMToAppipaySyncStep)
.build();
// TODO Add parameters validator
}
/*
* Steps
*/
// Sync step
@Bean
public Step forHRMToAppipaySyncStep(AppipaySyncTriggersReader reader, AppipaySyncTriggersToAppipayDescriptiveDataProcessor processor, AppipayDescriptiveDataWriter writer) {
return stepBuilderFactory
.get(FORHRM_TO_APPIPAY_SYNC_STEP)
.<List<SynchronisationAppipay>, Signaletiques>chunk(CHUNK_SIZE)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
@Bean
@StepScope
public AppipaySyncTriggersReader appipaySyncTriggersReader(@Value("#{jobParameters['EMPCODE']}") String employerCode, SynchronisationAppipayRepository appipaySyncTriggerRepository) {
return new AppipaySyncTriggersReader(employerCode, CHUNK_SIZE, appipaySyncTriggerRepository);
}
Invalid property 'EMPCODE' of bean class [org.springframework.batch.core.scope.context.StepContext]: Bean property 'EMPCODE' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
我只是不知道我做错了什么,因为根据我在网上发现的文档和其他帖子,一切似乎都很好。
编辑:我使用的是Spring 4.3.3和Spring Batch 3.0.7
我得到了我问题的答案。
在我导入到配置中的BatchConfiguration中,有一个jobParameters bean,它优先于传递给作业的参数。所以我的论点在这篇文章中找不到。我把它拿走了,它解决了我的问题。
我们正在实施Spring批量作业, 我们需要将作业参数从Client/MASTER传递给SLAVE。CLIENT/MASTER是我们的作业和分区代码所在的位置。我们使用传递JOB参数的J Unit调用JOB。 SLAVE是定义所有步骤及其实现(读取器Writer和处理器)的地方。 我们能够以独立的方式实现这一点,但不能与客户一起实现 我们正在使用Weblogic和Spring集成以及JMS来实现同
我的服务是开始Spring批工作。我希望能够传递一些对象给作业,每次这个对象参数都会不同。这个对象我需要在我的任务中使用。我开始工作的JobLauncher。据我谷歌,我看到JobParameters不会帮助我在这种情况下。此外,我发现很多答案是使用JobExecttionContext或任何东西。但是我想在作业开始前注入参数对象。它是可拥有的吗? 开始工作的服务 我的小任务
我得和Spring批处理问题。都与通过命令行传入的JobParameters有关。 第一期: 为了从JobParameters获取路径,我使用BeforeStep注释加载JobParameters并将它们复制到局部变量上。不幸的是,这不起作用。变量将为并且执行失败,因为文件无法打开。 如何访问读取器中的作业参数?我想将文件路径作为命令行参数传入,然后读取这个文件。
问题内容: 我是cron工作的新手,不确定是否会奏效。 为了安全起见,我考虑过制作一个一页脚本,该脚本查找某些GET值(用户名,密码和安全代码),以确保只有计算机和知道这3种信息的人才能运行该命令。 我制作了脚本,并且可以在浏览器中运行该脚本,但是可以使用GET值运行cron作业吗? 一个例子就是我跑步 这可能吗? 问题答案: 仅当通过Web服务器调用脚本时,&关联数组才被初始化。通过命令行调用时
在表中,默认情况下传递和作业参数。当我使用REST endpoint launcher方法触发作业时,我没有看到这些参数在默认情况下被传递。 并且在每个作业运行中传递这两个参数的相同值。和。正如所料,它给出了以下异常。 我的问题是: 当我使用命令行触发作业时,为什么默认情况下传递此和作业参数? ,为什么每次运行作业时传递的两个参数的值都是一样的?即使我正在使用 方法是如何创建差异的?
我正在使用Spring batch进行批处理,在进行批处理之前,我想验证所有作业参数,如productName、productID、开始日期、结束日期、productType,如果这些作业参数为null或包含错误值,我必须使验证步骤失败,并使作业失败。 我已经编写了验证步骤和Tasklet,在我的Tasklet中,我计划处理作业参数验证(对所有作业参数执行空检查)。因为我是第一次做Spring批处