我对 spring 或依赖注入(inject)还很陌生。我在已经构建的 jar 文件中有一个抽象类 A,它不是由 Spring 管理的(这是基于它没有自动连接任何依赖项,库中没有使用 spring 注释的事实。)。
我有一个项目需要使用此类,并希望注入(inject) A 类依赖项(例如 B 类)的实现。本项目使用springboot。
如何将 B 类型的依赖注入(inject)到 A 中? 我尝试了以下操作: 1. 创建一个配置 (@Configuration) 类并添加一个注释为 @Bean 的方法 getB(),它将使用我的 B 实现返回类型 B 的对象。
@Bean
public B getB () {
return new MyB();
}
最佳答案
如果您想将 B
注入(inject) A
中,则不能。由于A
不是由Spring管理的,IOC容器永远不会在他不知道的类中注入(inject)任何东西。
问题的关键是您想要获取和使用 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
}
}
关于java - 将依赖项注入(inject)到不受 spring 管理的库类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48057812/