gpt4 book ai didi

java - 将依赖项注入(inject)到不受 spring 管理的库类中

转载 作者:行者123 更新时间:2023-11-30 02:16:56 26 4
gpt4 key购买 nike

我对 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com