当前位置: 首页 > 面试题库 >

将参考bean按类型自动连接到列表中

柯立果
2023-03-14
问题内容

我有一类具有Daemon类型的对象列表。

class Xyz {    
    List<Daemon> daemons;
}

我的弹簧配置看起来像这样。

<bean id="xyz" class="package1.Xyz">
   <property name="daemons" ref="daemonsList">
</bean>

<bean id="daemon1" class="package1.DaemonImpl1"/>
<bean id="daemon2" class="package1.DaemonImpl2"/>

<bean id="daemonsList" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <ref bean="daemon1" />      
                <ref bean="daemon2" />
            </list>
        </constructor-arg>
</bean>

现在,可以Daemon在列表中自动自动连接所有类型的bean,而不是显式连接列表中的每个守护程序实现。我要解决的问题是,如果有人创建了Daemon类的新实现的bean,却忘记将其连接到列表中。

我已经在stackoverflow上的某个地方看到了这个问题,但无法再次找到它。对此表示歉意。


问题答案:

它应该像这样工作(从您的XML中删除ArrayList bean):

public Class Xyz {

    private List<Daemon> daemons;

    @Autowired
    public void setDaemons(List<Daemon> daemons){
        this.daemons = daemons;
    }

}

我认为没有办法在XML中做到这一点。

请参阅:
3.9.2。@Autowired@Inject

通过将注释添加到需要该类型数组的字段或方法中,还可以从ApplicationContext提供特定类型的所有bean:

public class MovieRecommender {

  @Autowired
  private MovieCatalog[] movieCatalogs;

  // ...
}

同样适用于类型化的集合:

public class MovieRecommender {

  private Set<MovieCatalog> movieCatalogs;

  @Autowired
  // or if you don't want a setter, annotate the field
  public void setMovieCatalogs(Set<MovieCatalog> movieCatalogs) {
      this.movieCatalogs = movieCatalogs;
  }

  // ...
}

顺便说一句,从Spring 4.x开始,这些列表可以使用@Ordered机制自动排序。



 类似资料:
  • 问题内容: 我有一类具有类型的对象列表。 我的spring配置看起来像这样。 现在,可以在列表中自动自动连接所有类型的bean,而不是显式连接列表中的每个守护程序实现。我要解决的问题是,如果有人创建了类的新实现的bean,却忘记将其连接到列表中。 我已经在stackoverflow上的某个地方看到了这个问题,但无法再次找到它。对此表示歉意。 问题答案: 它应该像这样工作(从你的XML中删除Arra

  • 使用Spring,可以通过接口类注入bean列表,如: 实现此接口的所有已定义bean都将出现在此列表中。 基于注释的方法对我来说是不可能的,因为服务类在一个模块中,不能有Spring依赖关系。 我需要通过xml配置从外部使用这种机制。 有人知道怎么解决这个问题吗? 编辑:此外,有不止一个Spring应用程序使用此服务。所以最好的解决方案是完全通过xml配置来处理这个szenario。然后,我可以

  • 问题内容: 我已经定义了一个接口及其一些实现,并且都用进行了注释。 然后,我通过以下方式将它们自动连接到我的应用中: 工人被列入列表的顺序取决于什么? 我怎样才能让更多的和(也实现)不带注释通过我被装配到同一个列表? 是否保留了xml 的顺序和xml 的顺序? 我是否可以依靠规则将工作人员A,B,C和D放入列表的顺序? 问题答案: 如果要在Spring注入的List中对这些依赖项进行排序,请使用@

  • 我不确定我的代码出了什么问题。我正在学习弹簧靴。但我无法运行应用程序,因为我得到以下错误 模型类 主类:

  • 我正在使用Swing和Spring创建一个金融应用程序。在应用程序的一部分中,我有一个,其中包含应用程序中每个的。单击时,我希望在中显示类型的。这都是在下面的控制器中执行的。 会为每个点击更改,因此我将设置为一个原型bean,因此我将为每个帐户接收一个新实例。为了使原型作用域工作,我需要使用。以下是代码: 您将注意到我试图自动连接类型的bean。但是,该bean没有正确地自动连接,它是空的。以下是

  • 我在创建带有参数的@Bean时遇到问题,这运行得很好,但在intelliJ中,它给出的错误无法自动连线。找不到“String”类型的bean。 我要做什么?我正在尝试创建具有原型作用域的bean,在IntelliJ“无法自动连线。未找到‘String’类型的bean”中出现此错误有谁能帮我解决这个问题吗 这是原型测试的类