提问者:小点点

当自动装配使用将受益于示例


我最近学习了Spring自动装配的概念。当我试图理解Spring自动装配在哪些特定场景下是有用的时,我从我们stakoverflow论坛上提出的一个问题中得出了以下两个原因。

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

2.我发现自动装配在工厂bean制作另一个bean的情况下很有用(其实现类名在系统属性中描述,因此我无法在XML中定义所有连接)。不过,我通常更喜欢显式连接;

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


共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会自动拾取bean,因为它们的@Component注释(当然假设组件扫描已经启用)