0

我正在使用 Azure-functions 开发 spring-cloud-function。是否可以在“处理程序”(扩展 AzureSpringBootRequestHandler)中使用任何弹簧托管组件?

我试图通过示例项目缩小范围: https ://github.com/spring-cloud/spring-cloud-function/tree/master/spring-cloud-function-samples/function-sample-azure

所以我能想象的最简单的例子是:

public class UppercaseHandler extends AzureSpringBootRequestHandler<String, String> {

   private final UppercaseService uppercaseService;

   @Autowired
   public UppercaseHandler (UppercaseService uppercaseService){
      this.uppercaseService = uppercaseService;
   }

    @FunctionName("uppercase")
    public String execute(@HttpTrigger(name = "req", methods = {HttpMethod.GET,
            HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage<Optional<String>> request,
        ExecutionContext context) {
        return handleRequest(request.getBody().get(), context);
    }
}

然而,看起来这个处理程序不是由 spring 管理的,也不能用于自动装配。很高兴能得到一些帮助,谢谢!

4

1 回答 1

0

您正在尝试在 Azure Function HTTP 请求处理程序(特定于云提供商的非常薄的适配器)中使用 Spring 自动装配,该处理程序与 Spring 功能分离。这就是为什么它在那里不起作用。适配器中不应有任何业务逻辑。但是,如果您在任何 Spring 控制器/服务中使用 DI,它将像在常规 Spring 启动应用程序中一样工作。

您可以查看这篇方便的博客文章Playing with Spring Cloud in Azure Functions

于 2020-11-23T14:12:39.510 回答