java - 构造函数中的 Spring 非必需属性?

标签 java spring

我想通过构造函数注入(inject)将 bean 列表注入(inject)到 spring bean 中。

@Component
public void MyBean {
    @Autowired
    public MyBean(List<BeanToInject> beanList) {
        ...
    }
}

但是 BeanToInject 的实现在其他模块中。这些模块可能已关闭。如果在 applicationcontext 中没有 BeanToInject 的实现,spring 会在启动时抛出一个异常,而不是注入(inject)一个空列表。我能做什么? (基于 Setter 和私有(private)属性(property)的 Autowiring 不是我的选择。)

最佳答案

在 Spring 中,Autowired 可以有一个 required 值来定义它在 Autowiring 时是否需要。但这不适用于构造函数。在您的情况下,最好的解决方案是在方法或属性中使用 Autowiring 并应用
@Autowired(required=false) private List<BeanToInject> beanList;
或者
@Autowired(required=false) public void setBeanList(List<BeanToInject> beanList);

关于java - 构造函数中的 Spring 非必需属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892714/

相关文章:

java - 扩展程序参数中的通配符

java - 不使用 JRE 的 XML 实用程序的 Java 中的 XSLT

java - 物理内存使用率过高

java - 处理多线程/传出 http 请求

java - 从jetty 7升级到jetty 9

java - MessageStore 通过 Spring Integration+ Java Config 支持 QueueChannel

java - 如何在执行jar文件时打开cmd(qt QProcess)

spring - 如何在 Spring Boot 提供的 create-react-app 中使用本地字体?

java - 在 Spring Boot 上使用 ConfigurationProperties 时获取空值

java - 在运行用户提供的 Java 代码时,我应该防范哪些安全风险?