[英]Injecting a dependency into a library class not managed by spring
我对spring或依赖注入很陌生。 我已经在一个jar文件中建立了一个抽象类A,该文件不是由Spring管理的(这是基于它没有自动关联其依赖项,在库中没有使用spring注释的事实。)
我有一个需要使用此类的项目,并且想注入我对类A的依赖项(例如,类型B)的实现。 该项目使用springboot。
如何将B类型的依赖项注入A? 我尝试了以下操作:1.创建一个配置(@Configuration)类,并添加一个标注为@Bean的方法getB(),它将使用我的B实现返回类型B的对象。
@Bean
public B getB () {
return new MyB();
}
如果要将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
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.