gpt4 book ai didi

scope - (Spring-Batch) Autowired 在 StepScopeTestExecutionListener 中运行不佳

转载 作者:行者123 更新时间:2023-12-01 12:39:29 24 4
gpt4 key购买 nike

我正在尝试 spring-batch 测试代码。

我使用 StepScopeTestExecutionListener 来 Autowiring 按步骤划分范围的 bean。

(当然,我用这个监听器作为TestExecutionListeners注解。)


下面的bean是注入(inject)bean的井。

<bean id="itemReader" scope="step" class="org.springframework.batch.item.file.FlatFileItemReader">
...
</bean>

@Autowired
@Qualifier(value="itemReader")
ItemReader<Item> reader;

但下面不是。出现 NoSuchBeanDefinitionException 并显示消息“没有找到类型为 [org.springframework.batch.item.file.FlatFileItemReader] 的符合条件的 bean 以获取依赖项”

@Autowired
@Qualifier(value="itemReader")
FlatFileItemReader<Item> reader;

显然,我认为这是关于步骤范围的问题。

但是,我不明白 ItemReader 和 FlatFileItemReader 之间的区别。

或者,是不是StepScopeTestExecutionListener有问题?

我应该使用 setResources() 或 open() 等已实现的方法测试 FlatFileItemReader...你明白我的意思。

请帮忙。

谢谢。

最佳答案

这是因为 XML 配置使用 java 代理来实现步骤范围的依赖关系。因此,生成的 bean 定义只知道接口(interface)(在本例中为 ItemReader)。为了让它工作,您需要完全切换到 java 配置(当前 java 配置使用动态子类而不是 java 代理)或配置您的步骤范围,以便将 proxyTargetClass 设置为 true(这使用动态子类化)以便实现类信息可用。

关于scope - (Spring-Batch) Autowired 在 StepScopeTestExecutionListener 中运行不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344243/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com