当前位置: 首页 > 知识库问答 >
问题:

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

宇文灿
2023-03-14

我想用构造函数注入将一个bean列表注入到一个spring bean中。

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

但是BeanToInject的实现在其他模块中。这些模块可能被关闭。如果applicationcontext中没有BeanToInject的实现,则spring在start上抛出异常,而不是注入空列表。我能做什么?(对我来说,基于设置器和私有财产的自动取舍不是一种选择。)

共有1个答案

葛泳
2023-03-14

在Spring,Autowired可以有一个必要的值来定义它需要或不需要。但这不能应用于构造函数。在您的情况下,最好的解决方案是在方法或属性中使用autowired并应用
@autowired(required=false)私有列表 beanList;

@autowired(required=false)公共void setBeanList(list beanList);

 类似资料:
  • 因此,由于我一直在使用spring,如果我要编写一个具有依赖项的服务,我将执行以下操作: 我现在运行了使用另一个约定来实现相同目标的代码 这两种方法都会奏效,我明白。但是使用选项B有什么好处吗?对我来说,它在类和单元测试中创建了更多的代码。(必须编写构造函数,不能使用@InjectMocks) 是不是我漏了什么?autowired构造函数除了向单元测试添加代码之外,还有其他的功能吗?这是一种更好的

  • 问题内容: 因此,由于我一直在使用Spring,所以如果我要编写一个具有依赖项的服务,我将执行以下操作: 我现在遇到了使用另一种约定实现相同目标的代码 我知道这两种方法都行得通。但是使用选项B有一些好处吗?对我来说,它在类和单元测试中创建了更多代码。(必须编写构造函数,而不能使用@InjectMocks) 有什么我想念的吗?除了将代码添加到单元测试中之外,自动装配构造函数还有其他功能吗?这是进行依

  • 这是我在编写java时从未考虑过的,因为我使用这个模式时没有任何问题: 这样做效果很好,因为重写的函数不依赖于任何未初始化的数据,但是它们对于每个派生的都是唯一的(因此需要抽象)。这在科特林也有效,但它仍然给出了警告。 那么在Java/Kotlin中这种做法是不是很糟糕呢?如果有,我该如何改进?是否可以在kotlin中实现而不被警告在构造函数中使用非final函数? 一个可能的解决方案是将行移动到

  • 我正在学习Spring Framework,我得到了以下错误消息: com.example.demo.AppUser.AppUserService中的构造函数的参数0需要类型为“com.example.demo.AppUser.AppUserRepository”的bean,但找不到该bean。 这是我的AppUserRepository 如果有人知道问题出在哪里,请帮帮我

  • 我在代码中遇到了一个问题,我正在寻找解决方法。这是一节课: 我面临的第一个问题是我不能使用E.class。然后,我将构造函数更改为以下内容: 但当我运行应用程序时,由于com中构造函数的参数2,它无法启动。领域处理程序。BaseCommandHandler需要“java”类型的bean。“lang.Class”无法找到 我如何解决这个问题?

  • 题目说明了一切,我得到了一个类,其中构造函数的变量必须是私有的。 当然,它附带了变量的公共。 现在问题就在我尝试制作一个名为 Magazine 的子类之后。该类应继承名称和价格,但对于每个对象启动,价格都是恒定的。所以它们不会作为名称出现在构造函数上。 这也带有它自己的。 我试图将价格放在构造函数中,但构造函数需要一个传递的参数。使用还会通知父构造函数中没有一个具有这样的形状。 当我尝试使用父类方