假设我有以下类(class)

@Data
@Component
public class Student {

    @Autowired
    private Vehicle vehicle;

}


public interface Vehicle{}

@Component
public Jeep implements Vehicle{}

@Component
public Van implements Vehicle{}

Spring Boot 如何知道将哪种类型的 Vehicle 放入我的 Student 对象中?
我知道 Guice 有模块,它准确定义了某个对象是如何在需要该对象的类中使用@Provides 和@Singleton 与@Inject 结合构建的。
Spring Boot 有同样的东西吗?

最佳答案

要访问具有相同类型的 bean,我们通常使用 @Qualifier(“beanName”) 注释。

@Data
@Component
public class Student {
    @Autowired
    @Qualifier("Jeep")
    private Vehicle vehicle;
}


public interface Vehicle{}

@Component
@Qualifier("Jeep")
public Jeep implements Vehicle{}

@Component
@Qualifier("Van")
public Van implements Vehicle{}
你可以用@Primary 注释你的默认 bean,这样如果没有限定符,这个 bean 将被选中
@Data
@Component
public class Student {
    @Autowired
    private Vehicle vehicle;
}


public interface Vehicle{}

@Component
@Primary
public Jeep implements Vehicle{}

@Component
public Van implements Vehicle{}

关于java - Spring Boot 如何知道要注入(inject)哪个对象?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63261516/

10-11 10:54