假设我有以下类(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/