gpt4 book ai didi

java - Autowiring Spring 父类(super class)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:20 29 4
gpt4 key购买 nike

为什么 Spring 在 Autowiring 期间自动选择父类(super class)类型?

例如,如果我有

@Component
public class Foo {}

@Component
public class Bar extends Foo {}

有人 Autowiring

@Autowired
private Foo foo;

为什么 Spring 总是选择父类(super class)型 Foo?这不应该是一个“不明确的”映射(并导致 Spring 抛出错误)吗?

从技术上讲,您不是有两个 Foo 候选人吗? (例如,当从 Foo 中删除 @Component 时,Bar 会自动选取...)

最佳答案

这可能是因为 Autowiring 是按名称而不是类型完成的。如果我像这样使用 xml 设置我的 bean:

<bean id="foo1" class="Foo"/>
<bean id="foo2" class="Bar"/>

并尝试按类型 Autowiring :

@Autowired private Foo aFoo;

我明白了

org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [Foo]

关于java - Autowiring Spring 父类(super class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16683408/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com