spring 中的绑定注解

Binding Annotation in spring

我们正在使用 guice 进行依赖注入。 现在我们要使用 spring 引导编写新项目。由于我们使用的是 Spring Boot,我们认为使用 Spring 进行依赖注入比使用 guice 更好。

在 guice 中我们使用了 Binding Annoation。如果我们有多个 bean 可用并且可以根据注释注入,这将非常有用。

与我们在 Spring 中拥有的类似吗?我们是否需要相应地命名 bean 并将其与 @Autowire@Qualifier 一起使用?

第一手例子:

public class MovieRecommender {

private final CustomerPreferenceDao customerPreferenceDao;

@Autowired
private MovieCatalog movieCatalog;

@Autowired
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
    this.customerPreferenceDao = customerPreferenceDao;
}
// ...
}

这是一个询问 Spring 框架的非常基本概念的问题,即 bean 和依赖注入。

我建议 运行 像 kickstart-sample 这样的示例项目之一,并在玩代码的同时让自己熟悉 Spring。

然后跳转到官方文档参考也不错。因为在使用注解的时候需要注意的选项比较多。

http://docs.spring.io/spring/docs/4.3.0.BUILD-SNAPSHOT/spring-framework-reference/htmlsingle/#beans-autowired-annotation

你可以使用 @Autowired 当你有一个某种类型的 bean 时。

@Autowired
private MyBean myBean;

对于许多 beans 示例配置 class:

@Configuration
public class MyConfiguration {

 @Bean(name="myFirstBean")
 public MyBean oneBean(){
    return new MyBean();
 }

 @Bean(name="mySecondBean")
 public MyBean secondBean(){
    return new MyBean();
 }
}

@Autowired@Qualifier("someName") 当您有多个某种类型的 bean 并且您想要一些特定的时。

@Autowired
@Qualifier("myFirstBean")
private MyBean myFirstBean;

@Autowired
@Qualifier("mySecondBean")
private MyBean mySecondBean;

当你想注入所有相同类型的 bean 时,你可以:

@Autowired
private List<MyBean> myBeans;