相关疑难解决方法(0)

如何在Spring XML配置中收集和注入给定类型的所有bean

Spring框架最强大的一个重点是依赖注入概念.我理解其中的一个建议是将一般的高级机制与低级细节分开(如依赖性倒置原则所宣布的那样).

从技术上讲,这可以归结为让bean实现尽可能少地了解作为依赖项注入的bean,例如

public class PrintOutBean {
    private LogicBean logicBean;
    public void action() {
        System.out.println(logicBean.humanReadableDetails());
    }
    //...
}

<bean class="PrintOutBean">
    <property name="loginBean" ref="ShoppingCartBean"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要一个在多个依赖bean上运行的高级机制呢?

  public class MenuManagementBean {
       private Collection<Option> options;
       public void printOut() {
            for (Option option:options) {
              // do something for option
            }
            //...
       }
  }
Run Code Online (Sandbox Code Playgroud)

我知道一个解决方案是@Autowired在单例bean中使用注释,即......

  @Autowired
  private Collection<Option> options;
Run Code Online (Sandbox Code Playgroud)

但它不违反分离原则吗?为什么我必须在我使用它们的同一个地方指定依赖者(即MenuManagementBean我的例子中的类)?有没有办法像这样在XML配置中注入bean集合(在MMB类中没有任何注释)?

<bean class="MenuManagementBean">
    <property name="options">
       <xxx:autowire by-type="MyOptionImpl"/>
    </property>
 </bean>
Run Code Online (Sandbox Code Playgroud)

java spring dependency-injection

24
推荐指数
3
解决办法
3万
查看次数

标签 统计

dependency-injection ×1

java ×1

spring ×1