我对春天或依赖注入很新。我已经在一个jar文件中创建了一个抽象类A,它不是由Spring管理的(这是基于它没有自动连接的任何依赖项,库中没有使用spring注释的事实。)。 / p>
我有一个项目需要使用这个类,并希望注入我的类A的依赖(例如,类型B)的实现。这个项目使用springboot。
如何将B类型的依赖关系注入A? 我试过以下: 1.创建一个配置(@Configuration)类,并添加一个注释为@Bean的方法getB(),它将使用我的B实现返回类型B的对象。
@Bean
public B getB () {
return new MyB();
}
答案 0 :(得分:2)
如果您想将B
注入A
,则不能。由于A
不是由Spring管理的,因此IOC容器永远不会在他不知道的类中注入任何内容。
问题的关键在于您希望获取和使用A
的实例。
如果您想在Spring管理的代码中使用A
,那么您必须为A
创建一个工厂:
@Bean
public A a() {
B b = new MyB();
A a = new A(b); // new A is not possible since A is abstract but you got the idea
return a;
}
// ...
class MyService {
@Autowired
A a;
void something() {
(a.b instanceof MyB) // true
}
}