我有一些 @Service FooService
根据请求,对某个外部服务进行 API 调用并返回一些 FooResult
.
在我的项目中,我定义了一些 FooTask
.这实际上是 java.util.Function
的包装。 (它被用于一些 CompletableFuture
链)
理想情况下,我希望任务调用 FooService.request()
.一种解决方案是注入(inject) FooService
在构造函数中,但我不确定这是一个好主意。
Spring 的方法是什么?
最佳答案
我不认为使用 FooTask
作为一个 Spring Component
(使用 @Component
注释的类)如果您的 FooTask
会导致任何问题是 Functional
Wrapper 并不会保存任何状态,但是如果您的 FooTask
保持某种状态,或者您想在应用程序的某处创建该状态的多个实例,您可以创建 FooTask
的实例在 Spring 框架和 Autowiring 之外 FooService
在其中,这完全可以使用 AutowiredCapableBeanFactory
但除非必要,否则不要采用这种方法:
这样做到autowire
您的 FooService
在 FooTask
:
private @Autowired
AutowireCapableBeanFactory beanFactory;
public void doSomething() {
FooTask fooTask = new FooTask();
beanFactory.autowireBean(fooTask);
// obj will now have its dependencies autowired.
}
关于java - 如何在 Spring @Service 和非 Spring 对象之间集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63304049/