gpt4 book ai didi

java - Spring不在构造函数中使用 boolean 值创建bean

转载 作者:行者123 更新时间:2023-11-29 08:28:27 25 4
gpt4 key购买 nike

我正在尝试创建一个在构造函数中传递文件和 boolean 值的简单 bean,如下所示:

@Service
public class FileBasedSink implements Sink {
protected File outputDirectory;
protected boolean useCompression;

public FileBasedSink(File outputDirectory, boolean useCompression) {
this.outputDirectory = outputDirectory;
this.useCompression = useCompression;

}


}

和 spring-context 文件:

<context:component-scan base-package="org.aksw.simba.squirrel" />

<!--
<bean id="workerImpl" class="org.aksw.simba.squirrel.worker.impl.WorkerImpl"></bean>
-->
<!-- Output folder for FileBasedSink -->
<bean id="outputFolder" class="java.io.File">
<constructor-arg index="0" value="{systemProperties['OUTPUT_FOLDER']}" />
</bean>

<!-- File Based Sink implementation -->
<bean id="fileSink" class="org.aksw.simba.squirrel.sink.impl.file.FileBasedSink">
<constructor-arg name="outputDirectory" ref="outputFolder" />
<constructor-arg name="useCompression" value="true"/>
</bean>

这应该很简单,但不知何故,spring 抛出 NoSuchBeanDefinitionException:没有可用的 'boolean' 类型的合格 bean。

我在这里错过了什么?

最佳答案

您正在混合组件扫描和 XML bean 定义。

方法一:

使用 @Service -注释,然后添加 @Autowired给构造函数。删除 FileBasedSink 的定义- 来自 XML 的 bean。如果它是一个常量 boolean bean,那么 @Value("true")到 boolean 参数。或者,正如@Obi Wan - PallavJha 所建议的那样,您可以在上下文中的某处声明 boolean bean 并使用 @Qualifier("booleanBean") - boolean 参数的注释。

方法 2:

通过 <constructor-arg's> 在 XML 中定义 bean ,然后删除 @Service -注释。

关于java - Spring不在构造函数中使用 boolean 值创建bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335236/

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