在Spring-Config中,两个Spring ID可以使用两个ID吗?

时间:2019-04-10 15:25:49

标签: java spring dependency-injection

假设我们有Animal-Bean,并且我们想要定义不同的具体动物,例如:

public interface Animal
...
public class Cat implements Animal
...
public class Dog implements Animal

我们想要在类似的地方注入动物

@Autowired
@Qualifier("cat")
private Animal cat

然后,我们可以使用ID和@Qualifiers定义动物豆。到目前为止,一切都很好。

但是如果我们要识别具有不同ID(例如“ cat”和“ timmy”(猫的名字))的同一Cat类,该怎么办?换句话说,我们希望使用形容词而不是双射形映射

Spring允许这样的配置:

<bean id="cat" class="Cat"/>
<bean id="timmy" class="Cat"/>

Spring允许这样做,并且会为我们提供两个ID的Cat类(尽管实例不同)。这是设计意图还是我在滥用Spring,以致有朝一日某个将来的Spring版本将不再支持此行为(一个Bean具有两个ID)?

1 个答案:

答案 0 :(得分:0)

这是正确的行为。

如果您为bean明确命名,则会创建一个带有该限定符的新bean。

这很有用,没有理由将其删除。

例如,想象一下,如果您有一个访问两个不同数据库的应用程序,会发生什么。您需要两个数据源实例。您可以使用其他ID轻松做到这一点。