当自动装配使用时,例如受益人

时间:2014-05-01 06:08:46

标签: spring dependency-injection

我最近在春天学会了自动装配的概念。当我试图理解弹簧自动装配在哪些特定情况下是有用的 我从我们的stakoverflow论坛提出的一个问题中提出了以下两个原因。

1.我想从属性文件中读取值并将它们注入bean中。只有这样我才能弄清楚如何在启动我的应用程序时这样做 用XML连接bean(并注入属性。)我最终使用了“byName”属性(因为bean也标记为@Component)然后 将bean注入另一个类时使用@Autowired @Qualifier("nameIChose")。这是我编写的唯一用XML连接的bean。

2.我发现自动装配在我​​有一个工厂bean制作另一个bean(其实现类名称在系统中描述)的情况下很有用 属性,所以我无法定义XML中的所有连线)。我通常喜欢明确地说明我的布线;

任何人都可以给我一些上述情况的代码片段示例,这将使我对自动装配的理解更清晰吗?

1 个答案:

答案 0 :(得分:1)

以下是将属性注入bean的示例。

使用现场注入:

@Component
public class YourBean {

    @Value("${your.property.name}")
    private String yourProperty;
}

使用构造函数注入:

@Component
public class YourBean2 {

    private String yourProperty;

    @Autowired
    public YourBeans2(@Value("${your.property.name}") String yourProperty) {
       this.yourProperty = yourProperty;
    }
}

以下是自动装配各种bean的超级简单示例

@Component
public class Foo {

    public void doSomething() {

    }
}

@Component
public class Bar {

   private Foo foo;

   @Autowired
   public Bar(Foo foo) {
      this.foo = foo;
   }

   public void doSomethingElse() {
      foo.doSomething();
   }
}

在前面的示例中,不需要完成Foo和Bar的XML配置,Spring会因为@Component注释而自动选择bean(假设当然已启用组件扫描)