- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是一个非常简单的设置。我有一个可能包含 500 万条记录的文件,我需要读取这些记录并进行一些处理,然后将其发送到数据库。处理和写作的机制并不重要。我需要能够将路径和文件名 [/opt/etc/app/partner/input_file.csv ] 作为参数传递到流程中。这很简单,将其添加到 JobParameters 并将其提供给 JobLauncher。
JobParametersBuilder jpBuilder = new JobParametersBuilder() ;
jpBuilder.addString("filePath", "/opt/etc/app/partner/input_file.csv") ;
jobLauncher.run(job, jpBuilder.toJobParameters() ;
完成,现在让上下文知道它。再次引用 jobParameters 的简单问题。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:batch="http://www.springframework.org/schema/batch"
xsi:schemaLocation="
http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<description>PoC to demonstrate variable row content handling</description>
<batch:job id="poc" job-repository="jobRepository" incrementer="runIdIncrementer" restartable="true">
<batch:step id="pocReadWriteStep">
<batch:partition step="step" partitioner="partitioner">
<batch:handler task-executor="taskExecutor"/>
</batch:partition>
</batch:step>
</batch:job>
<batch:step id="step">
<batch:tasklet task-executor="taskExecutor" throttle-limit="20" transaction-manager="transactionManager" allow-start-if-complete="true">
<batch:transaction-attributes isolation="READ_UNCOMMITTED"/>
<batch:chunk
reader="reader"
processor="processor"
writer="writer"
commit-interval="20">
</batch:chunk>
</batch:tasklet>
</batch:step>
<bean id="reader" class="org.springframework.batch.item.file.FlatFileItemReader" scope="step">
<property name="resource" value="file:#{jobParameters['filePath']}"/>
<property name="lineMapper">
<bean class="org.springframework.batch.item.file.mapping.PatternMatchingCompositeLineMapper">
<property name="tokenizers">
<map>
<entry key="*" value-ref="lineTokenizer"/>
</map>
</property>
<property name="fieldSetMappers">
<map>
<entry key="*" value-ref="fieldSetMapper"/>
</map>
</property>
</bean>
</property>
</bean>
<bean id="lineTokenizer" class="org.springframework.batch.item.file.transform.DelimitedLineTokenizer"/>
<bean id="fieldSetMapper" class="org.springframework.batch.item.file.mapping.PassThroughFieldSetMapper"/>
<bean id="processor" class="com.verifi.springbatchpoc.PocProcessor"/>
<bean id="writer" class="com.verifi.springbatchpoc.PocWriter"/>
<bean id="runIdIncrementer" class="org.springframework.batch.core.launch.support.RunIdIncrementer"/>
<bean id="partitioner" class="org.springframework.batch.core.partition.support.MultiResourcePartitioner">
<property name="resources" value="file:#{jobParameters['filePath']}"/>
</bean>
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="20"/>
</bean>
</beans>
除了在 MultiResourcePartitioner 中它似乎无法识别对 jobParameters 的引用。我可以对路径和文件名进行硬编码,这很令人高兴,但这并不包含此实现的邮件。
因为我确定有人会问,这里是错误的堆栈跟踪(无论如何都是错误的一部分)。
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
... 46 more
Caused by: org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 0): Field or property 'jobParameters' cannot be found on object of type 'org.springframework.beans.factory.config.BeanExpressionContext'
at org.springframework.expression.spel.ast.PropertyOrFieldReference.readProperty(PropertyOrFieldReference.java:207)
at org.springframework.expression.spel.ast.PropertyOrFieldReference.getValueInternal(PropertyOrFieldReference.java:71)
at org.springframework.expression.spel.ast.CompoundExpression.getValueInternal(CompoundExpression.java:52)
at org.springframework.expression.spel.ast.SpelNodeImpl.getTypedValue(SpelNodeImpl.java:102)
at org.springframework.expression.spel.standard.SpelExpression.getValue(SpelExpression.java:97)
at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:82)
at org.springframework.expression.common.CompositeStringExpression.getValue(CompositeStringExpression.java:1)
at org.springframework.context.expression.StandardBeanExpressionResolver.evaluate(StandardBeanExpressionResolver.java:138)
... 52 more
想法、意见、建议?
最佳答案
我认为你应该添加 scope="step"如下:
<bean id="partitioner" class="org.springframework.batch.core.partition.support.MultiResourcePartitioner"
scope="step">
<property name="resources" value="file:#{jobParameters['filePath']}"/>
</bean>
关于java - 为什么 SpringBatch MultiResourcePartitioner 不识别 jobParameters?更重要的是,该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14628612/
我想验证文件名和记录。我的应用上下文如下 我的项目阅读器上下文如下所示
以下是阅读器bean的代码示例 有 .我有一个类似的作家 bean 。我想要一个处理器的动态切换器。界面ItemProcessor需求I & O值得一提的是,要么我必
我正在尝试将作业参数注入(inject)自定义 ItemReader。我已经查看了关于该主题的所有 StackOverflow 注释(示例:How to get access to job param
我要检索 JobParameter和 JobExecutionContext我的 ItemWriter 中的对象类(class)。 如何进行? 我尝试实现 StepExecutionListener通
我正在尝试设置一个基于 Spring Batch XML 的配置,该配置使用面向 block 的处理。我不想对提交间隔进行硬编码,因为对于我的应用程序来说,更合适的做法是允许从 JobParamete
我尝试将 @Conditional 条件与 Spring Batch 的 @StepScope 一起使用,以在 Condition 中使用 jobParameter,但在条件初始化期间,JobScop
我在一个 Spring Batch 项目中有三个不同的 .properties 文件,我正在尝试设置哪个 .properties 文件应该用作 JobParameter。我希望能够像这样运行作业: j
我打算编写一个 ASP.NET 页面来按需触发作业。目前,我正在使用 SimpleTrigger 类来触发作业,但 __Trigger 类中没有一个支持对象类型作为 JobParameters 中的值
我想在 spring JobParameters 中添加一个 boolean 类型的参数。但在这里:http://docs.spring.io/spring-batch/trunk/apidocs/o
这是一个非常简单的设置。我有一个可能包含 500 万条记录的文件,我需要读取这些记录并进行一些处理,然后将其发送到数据库。处理和写作的机制并不重要。我需要能够将路径和文件名 [/opt/etc/app
这是一个非常简单的设置。我有一个可能包含 500 万条记录的文件,我需要读取这些记录并进行一些处理,然后将其发送到数据库。处理和写作的机制并不重要。我需要能够将路径和文件名 [/opt/etc/app
我仍在研究 spring batch,遇到了一个场景,我需要将 jobParameter 传递给自定义 bean。作业参数包含一个文件的路径。 这是我的上下文的样子: 这已包含在此处未
我从链接 https://stackoverflow.com/q/15784984/814074 读到一个问题并尝试了上面链接中给出的解决方案。但是,我在运行代码时遇到以下错误: Error crea
我是 Spring Batch 的新手,我有一个以下主程序,我想使用 jobLauncherTestUtils 将其转换为测试用例。我们怎样才能做到这一点? 我关注了http://docs.sprin
如何将 JobParameters 传递给 MongoItemReader 查询? 我的 ItemReader 看起来像:- @Bean public ItemReader PersonTenantB
我正在尝试创建一个包含多个 FlatFileItemWriter 的 CustomWriter。配置是通过xml。我希望根据 jobParameters 中的值将 FlatFileItemWriter
我是一名优秀的程序员,十分优秀!