java - 如何在 Spring @Service 和非 Spring 对象之间集成?

标签 java spring spring-boot design-patterns dependency-injection

我有一些 @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您的 FooServiceFooTask :

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/

相关文章:

独立 servlet 容器中的 Spring Boot 应用程序 war

java - 如何在 Spring JPA Web 应用程序中设置一些 Hibernate 属性?

java - 验证 grails 中属性的错误

java - 从链接列表中检索特定数据

java - 如何将 Spring REST 投影与自定义 Controller 一起使用

java - Spring Boot 应用程序中出现 MySQL 语法错误

spring-mvc - 非空对象变为空json

java - 当 JMockit 位于类路径上时,Arquillian org.junit.runner.Runner NoClassDefFoundError

spring - Spring MVC 中的平铺和重定向

android - 无法将android中的POST请求发送到Grails后端