Spring 怎么注入 Java 集合类型?
在Spring中,可以使用@Autowired
和@Qualifier
注解来注入Java集合类型,例如List,Set和Map。当你有多个相同类型的Bean需要注入到一个集合中时,这种方式非常有用。
首先,你需要为你的每一个Bean定义一个唯一的@Qualifier
:
@Service
@Qualifier("serviceOne")
public class ServiceOne implements ServiceInterface {
//...
}
@Service
@Qualifier("serviceTwo")
public class ServiceTwo implements ServiceInterface {
//...
}
@Service
@Qualifier("serviceThree")
public class ServiceThree implements ServiceInterface {
//...
}
然后,你可以使用@Autowired
和@Qualifier
注解来注入这些Bean到一个集合中:
public class SomeClientClass {
private List<ServiceInterface> services;
@Autowired
public void setServices(List<@Qualifier({"serviceOne","serviceTwo","serviceThree"}) ServiceInterface> services) {
this.services = services;
}
//...
}
在这个例子中,setServices
方法上的@Autowired
注解告诉Spring我们想要注入一个ServiceInterface
类型的List。然后,@Qualifier
注解指定了我们想要注入哪些具体的Bean。
注意,@Qualifier
注解接受一个数组作为参数,这个数组中的每一个元素都是我们想要注入的Bean的@Qualifier
的值。
这样,Spring就会将所有指定的Bean注入到这个List中。你可以在你的代码中迭代这个List,然后对每一个Bean进行操作。这种方式提供了一种灵活的方式来处理多个相同类型的Bean。