Spring: 限定同名的不同类型

Spring: Qualifying different types with the same name

我有两个 类,我想使用 spring

自动装配
@Component
public class Restaurant {
    @Autowired
    @Qualifier("HighClass")
    private CoffeeMaker coffeeMaker;
}

和:

public class CappuccinoMaker implements CoffeeMaker{
    @Autowired
    @Qualifier("HighClass")
    int numOfSpoons;
}

然后注入:

@Bean(name="HighClass")
@Scope("prototype")
public CoffeeMaker HighClassCoffeeMakerGenerator() {
    return new CappuccinoMaker();
}
@Bean(name="HighClass")
public int getNumOfSpoons() {
    return 3;
}

我想用 "HighClass" 来限定 int 和 CoffeeMaker。在 Guice 中,可以使用相同的注释来注释不同的类型并正确地注入它们。

这似乎在 spring 中是不允许的。当我尝试注入字段时,出现错误,提示未找到所需的 bean。我错过了什么吗?

Spring 中的 Bean 名称是 unique. Use @Profile,以便从多个竞争变体中挑选一个 Bean。