首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据jobParameters通过Spring-Expression-Language或其他方式有条件地注入bean?

如何根据jobParameters通过Spring-Expression-Language或其他方式有条件地注入bean?
EN

Stack Overflow用户
提问于 2020-05-14 22:38:26
回答 1查看 103关注 0票数 0

我正在尝试创建一个包含多个FlatFileItemWriters的CustomWriter。配置是通过xml实现的。我希望根据jobParameters中的值将FlatFileItemWriters注入到CustomWriter中;如下所示-

代码语言:javascript
复制
<bean id="customWriter" class="com.company.writer.CustomDataWriter" scope="step">
    <property name="chapatiDataWriter" ref="#{jobParameters['chapatiSection'] != null ? chapatiDataWriter : null}"/>
    <property name="anotherDataWriter" ref="anotherDataWriter"/>
    <property name="batchJobConfiguration" value="#{jobParameters['product_configuration']}"/>
</bean>

当我尝试运行应用程序时,我得到;

代码语言:javascript
复制
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.customWriter' defined in URL [file:./conf/context.xml]: Cannot resolve reference to bean '#{jobParameters['chapatiSection'] != null ? chapatiDataWriter : null}' while setting bean property 'chapatiDataWriter'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.batch.item.file.FlatFileItemWriter@19cb8309' available

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'org.springframework.batch.item.file.FlatFileItemWriter@19cb8309' available
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:805)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1279)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:330)
    ... 52 common frames omitted

如何根据jobParameters有条件地注入chapatiDataWriter?

EN

回答 1

Stack Overflow用户

发布于 2020-05-14 23:11:04

即使SpEL非常强大,我也不建议在字符串中使用复杂的代码。我将使用FactoryBean创建自定义编写器,并在XML配置中使用工厂bean:

代码语言:javascript
复制
<bean id="customWriter" class="com.company.writer.CustomDataWriterFactoryBean" scope="step"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61800129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档