为了账号安全,请及时绑定邮箱和手机立即绑定

如何在作业中输入参数

如何在作业中输入参数

汪汪一只猫 2022-06-15 10:09:01
我正在尝试通过控制台输入特定参数以运行作业,如下所示:@Value("#{jobParameters['inputFileName']}")public void setFileName(final String name) {    inputFileName = name;}输入参数是 inputFileName,定义为“ficheroEntrada.csv”,如下所示: https ://imgur.com/m2jVoEB但我收到此错误:org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'batchConfiguration': Unsatisfied dependency expressed through method 'setFileName' parameter 0; nested exception is org.springframework.beans.factory.BeanExpressionException: Expression parsing failed; nested exception is org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'jobParameters' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext' - maybe not public or not valid?                at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:666) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]                at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]                at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372) ~[spring-beans-5.0.9.RELEASE.jar:5.0.9.RELEASE]我是春季批次世界的新手,我真的不知道我做错了什么......提前感谢您的帮助。
查看完整描述

2 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

要绑定作业参数,您需要将后期绑定功能与StepScope.


您需要做的是将您的 setter 定义为步进范围的 bean。在您的情况下,一种典型的方法是将项目阅读器声明为 bean 并按如下方式传递作业参数:


@Bean

@StepScope

public FlatFileItemReader flatFileItemReader(@Value("#{jobParameters['inputFileName']}") String name) {

   return new FlatFileItemReaderBuilder<Foo>()

               .name("flatFileItemReader")

               .resource(new FileSystemResource(name))

               // set other properties on the reader

}


查看完整回答
反对 回复 2022-06-15
?
ibeautiful

TA贡献1993条经验 获得超5个赞

使用 Spring,您应该能够通过使用带有语法的@Value注释来获取命令行参数。${}


public void setFileName(@Value("${inputFileName}") final String name) {

    inputFileName = name;

}

显然,@Value注释适用于由 Spring 上下文(Beans)管理(有时是代理)的对象。


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信