假设我们有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)?
答案 0 :(得分:0)
这是正确的行为。
如果您为bean明确命名,则会创建一个带有该限定符的新bean。
这很有用,没有理由将其删除。
例如,想象一下,如果您有一个访问两个不同数据库的应用程序,会发生什么。您需要两个数据源实例。您可以使用其他ID轻松做到这一点。