Spring Batch 访问步骤内的作业参数

2024-03-07

我有以下 Spring Batch Job 配置:

@Configuration
@EnableBatchProcessing
public class JobConfig {

    @Autowired
    private JobBuilderFactory jobBuilderFactory;

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Bean
    public Job job() {
        return jobBuilderFactory.get("job")
                .flow(stepA()).on("FAILED").to(stepC())
                .from(stepA()).on("*").to(stepB()).next(stepC())
                .end().build();
    }

    @Bean
    public Step stepA() {
        return stepBuilderFactory.get("stepA").tasklet(new RandomFailTasket("stepA")).build();
    }

    @Bean
    public Step stepB() {
        return stepBuilderFactory.get("stepB").tasklet(new PrintTextTasklet("stepB")).build();
    }

    @Bean
    public Step stepC() {
        return stepBuilderFactory.get("stepC").tasklet(new PrintTextTasklet("stepC")).build();
    }

}

我用以下代码开始这项工作:

    try {
                    Map<String,JobParameter> parameters = new HashMap<>();
                    JobParameter ccReportIdParameter = new JobParameter("03061980");
                    parameters.put("ccReportId", ccReportIdParameter);

                    jobLauncher.run(job, new JobParameters(parameters));
                } catch (JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException
                        | JobParametersInvalidException e) {
                    e.printStackTrace();
                }

如何访问ccReportId作业步骤的参数 ?


Tasklet.execute()方法接受参数ChunkContext,其中 Spring Batch 注入所有元数据。因此,您只需要通过这些元数据结构深入了解作业参数:

chunkContext.getStepContext().getStepExecution()
      .getJobParameters().getString("ccReportId");

或者其他选项是通过以下方式访问作业参数映射:

chunkContext.getStepContext().getJobParameters().get("ccReportId");

但这给了你Object并且您需要将其转换为字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Batch 访问步骤内的作业参数 的相关文章

  • 在 portlet 中设置 SearchContainer 以使用 EL 和 JSTL 在 JSP 中使用它

    我正在尝试使用SearchContainer在我的liferay应用程序中 目前我必须使用 JSP Scriplets 来设置results in
  • Hibernate 每个子类一个表继承策略的效率

    我正在考虑 Hibernate 管理的类层次结构的表布局 当然 每个子类表技术在我看来是一般意义上最合适的 然而 通过逻辑思考 我对其性能有些担忧 尤其是随着子类数量的扩展 举一个非常简短 且经典 的示例 假设您有以下类 public ab
  • AMQP Spring 集成错误处理

    我的集成流程如下所示 Bean public IntegrationFlow auditFlow Qualifier eventLoggingConnectionFactory ConnectionFactory connectionFac
  • 如何将日期字符串解析为Date? [复制]

    这个问题在这里已经有答案了 如何将下面的日期字符串解析为Date object String target Thu Sep 28 20 29 30 JST 2000 DateFormat df new SimpleDateFormat E
  • NIO 直接缓冲区何时以及如何被释放?

    我有一个 C 库 需要一个临时缓冲区作为暂存空间 我正在考虑将直接字节缓冲区的地址传递给它 在最终释放缓冲区之前 是否允许虚拟机重新定位缓冲区 JNI 框架消失后 本机库将保留该指针 我的理解是 JNI 本地对象引用无法缓存 因为 VM 可
  • Java 客户端到服务器未知来源

    我有一个简单的乒乓球游戏 需要通过网络工作 服务器将创建一个带有球和 2 个球棒位置的游戏 当客户端连接到服务器时 服务器将创建一个名为 PongPlayerThread 的新类 它将处理客户端到服务器的输入和输出流 我的服务器工作100
  • 为什么不自动装箱泛型的 Java 基本类型?

    Java 不允许在通用数据结构中使用原始类型 例如 不允许使用 ArrayList 原因是 原始类型不能直接转换为Object 然而 Java 1 5 确实支持自动装箱 并且包装类在通用数据结构中工作 那么为什么编译器不能将其自动装箱到 A
  • Eclipse Oxygen - 该项目未构建,因为其构建路径不完整

    我刚刚安装了 Eclipse Oxygen 并尝试在工作台中打开现有项目 但收到此错误 该项目未构建 因为其构建路径不完整 不能 找到 java lang Object 的类文件 修复构建路径然后尝试 建设这个项目 我尝试右键单击该项目 转
  • 在 libgdx 中渲染 box2d

    我有一个使用 FitViewport 的大小为 800x480 的游戏世界 并且最初使用像素渲染 box2d 实体 固定装置 因此所有物理效果都显得浮动且缓慢 查看文档后 我意识到 box2d 使用度量单位 因此我将 box2d 位置和大小
  • Eclipse RCP - 将视图与编辑器区域堆叠?

    在开发 Eclipse RCP 应用程序时 是否可以将视图与编辑器区域堆叠在一起 像这样 我有多个列表 表格 我想创建一种预览组合 当通过单击鼠标选择列表上的项目时 我希望我的预览合成显示该项目的数据 如果用户双击某个项目 我想在预览合成后
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • 如何在 Java 中使用 HTML 解析器和 Apache Tika 来提取所有 HTML 标签?

    我下载了 tika core 和 tika parser 库 但找不到将 HTML 文档解析为字符串的示例代码 我必须删除网页源的所有 html 标签 我能做些什么 如何使用 Apache Tika 进行编码 您想要 html 文件的纯文本
  • Thymeleaf 下拉菜单中的默认值

    我正在使用 Spring MVC 和 thymeleaf 构建一个 Web 应用程序 我的下拉菜单是这样的并且它按预期工作
  • 在 java 8 下使用泛型出现类型错误,但在 java 7 下则不然

    我有一段代码可以在 java 7 下编译良好 但不能在 java 8 下编译 这是一个独立的重现示例 我已经采用了显示此问题的真实代码并删除了所有实现 import java util Iterator class ASTNode
  • 用于 Eclipse 的 Resharper [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SQlite 获取最近的位置(带有纬度和经度)

    我的 SQLite 数据库中存储有纬度和经度的数据 我想获取距我输入的参数最近的位置 例如我当前的位置 纬度 经度等 我知道这在 MySQL 中是可能的 并且我已经做了相当多的研究 SQLite 需要一个自定义外部函数来实现半正弦公式 计算
  • “强制更新快照/版本” - 这是什么意思

    在 Maven 项目中 选择 更新项目 时 有一个名为 强制更新快照 版本 的选项 它有什么作用 强制更新快照 版本 就像运行以下命令 mvn U install U 也可以用作 update snapshot 看here http boo
  • 短 2 个字节

    我正在从串行端口读取一个长度为 133 字节的数据包 最后 2 个字节包含 CRC 值 我使用 Java 将 2 个字节值制成单个 我认为很短 这就是我所做的 short high 48 0x00ff short low 80 short
  • 如何从 Sublime Text 编辑器调试 Java 应用程序

    有时我正在对相当大的 Java 应用程序进行简单的修复 但我不想打开 Eclipse 来执行此任务 Eclipse 启动时间很长 并且由于该项目是由大量子项目构建的 而这些子项目无论如何都是由 Maven 构建的 因此需要很长时间才能使用
  • 如何在 Hibernate 中自动递增复合主键中的 Id?

    我有一个带有复合主键的表 groupId and batchId 实体类看起来像 Entity name EMPLOYEE public class Employee EmbeddedId private EmployeePK employ

随机推荐

  • YouTube 数据 API v3 - 评论线程请求不返回总结果计数

    当我执行以下 YouTube 数据 API 请求来列出 commentThreads 时 pageInfo totalResults未在响应中返回 我预计pageInfo totalResults待退回根据文档 https develope
  • Xcode 4:从命令行(xcodebuild)运行测试?

    我在 Xcode 4 中创建了一个全新的 iOS 项目 并包含单元测试 默认应用程序有 2 个目标 主应用程序和单元测试包 使用 产品 gt 测试 Command U 构建应用程序 构建单元测试包 启动 iOS 模拟器并运行测试 现在我希望
  • 是否可以对 Grid.Column 进行动画处理?

    我可以制作动画吗Grid Column财产 我需要搬家
  • 使用 Jetpack Compose 构造环

    I am learning Jetpack Compose and would like to build something like this 我尝试过通过堆叠使用框布局CircularProgressIndicator但需要对圆圈大小
  • 如何使用模型属性作为变量 ng-click

    我希望将 ng click 的函数调用作为字符串存储在我的模型中 我无法使用 ng click m func 如果我使用 ng click m func 也不起作用 http jsfiddle net j8wW5 19 http jsfid
  • redux-saga 调用调用的函数中对“this”的引用为空

    我在学redux saga我正在尝试将其集成到一个使用 openapi generator 生成的 API 的项目中 该 API 会生成如下所示的输出 async loginUser body Login Promise
  • Pandas - 查找每个组贡献的百分比

    我试图找到每个日期组所做的百分比贡献 下面给出的是我的数据的样子 期望找到每个产品在给定日期的贡献 date product quantity 2020 01 prod a 100 2020 01 prod b 200 2020 01 pr
  • 使用 vgg16 的验证集准确性较低

    我正在为一个项目进行狗品种分类 遇到了一个我不知道如何解决的重大问题 数据集是由以下机构提供的狗的图像斯坦福狗数据集 http vision stanford edu aditya86 ImageNetDogs 我用 keras 进行数据增
  • 在 Javascript/jQuery 中动态添加表行的绑定点击事件

    问题陈述 我有一张桌子thead静态创建 并且 tr td 在tbody动态创建的 我必须实现的是 当用户单击表格上的任意位置时 我需要获取val 被单击的行的第一列 为了测试这一点 我使用绑定一个点击事件on到父元素类 即类tbody 而
  • WPF 互斥列表框

    我有一个应用程序 其中有一个列表框的列表框 我想让 InnerList 框互斥 我的 ViewModel 有一个集合 Foos 它有一个描述 一个 IsSelected 属性和一个集合 Bars 它有一个名称和 IsSelected 属性
  • android studio 中缺少模拟器工具窗口

    我的 Android Studio IDE 缺少工具窗口 模拟器 View gt 工具窗口尽管 在工具窗口中启动 选项已选中File gt Settings gt Tools gt Emulator 我不知道是什么改变了它 但它曾经正常工作
  • 无法将新生成的 Play 框架项目导入 IntelliJ IDEA 15

    当我尝试将新创建的 play 框架项目导入到我的 IntelliJ IDEA 15 时 出现以下异常 Java HotSpot TM 64 Bit Server VM warning ignoring option MaxPermSize
  • 从当前工作树创建分支并重置为 HEAD

    我目前正在开发一个功能 结果比预期的要大 所以最好创建一个分支来处理它 因此 我需要从当前工作目录创建一个新分支 并将 master 分支重置为当前 HEAD 以便可以对生产环境进行一些修复 不知何故 这听起来像是一项简单的任务 但我不太明
  • Angular2 ng-模板位于单独的文件中[重复]

    这个问题在这里已经有答案了 angular2如何使用不同文件中的ng template 当我将 ng template 放在我使用的同一个 HTML 中时 它可以工作 但是当我将 ng template 移动到一个单独的文件中时 它就无法工
  • 在 C# 中捕获本机 C++ 异常

    我有一些本机 C 类库 我将它们封装在 C NET 中 然后从 C 调用它们 三层 我可以从 C NET 中抛出异常 并愉快地在 C 中捕获它们 问题是 我捕获本机 C 异常的唯一方法是捕获 System Exception 这很好 但在从
  • 为什么 Java 从套接字读取随机数量而不是整个消息?

    我正在做一个项目 有一个关于 Java 套接字的问题 可以找到源文件here https github com ChrisLundquist Handbrake Network Queue blob master java src File
  • C++ - 如何计算字符频率?

    我需要编写代码来将唯一字符及其频率存储在动态数组中 随着新数据的到来 我需要增加它的大小 在这种情况下 新数据将是遇到的新字符 我想到的算法是每次读取给定字符串时检查已知字符列表 如果它是一个新字符 我需要将数组大小增加 1 如果它不是一个
  • clojure 是否具有与 C# 等价的 Yield?

    我正在读电子书Scala 和 Clojure 中的函数式编程模式 https pragprog com book mbfpp functional programming patterns in scala and clojure并找到了导
  • LAContext canEvaluatePolicy 和 Swift 2

    这是我的 Swift 代码 if LAContext canEvaluatePolicy LAPolicy DeviceOwnerAuthenticationWithBiometrics return true 使用 Swift2 我将代码
  • Spring Batch 访问步骤内的作业参数

    我有以下 Spring Batch Job 配置 Configuration EnableBatchProcessing public class JobConfig Autowired private JobBuilderFactory