java—spring云函数可以访问任何spring托管组件吗?

tzxcd3kk  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(296)

我正在用azure函数开发一个spring云函数。是否可以在“handlers”(扩展azurespringbootrequesthandler)中使用任何spring管理的组件?
我试图通过示例项目缩小范围: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管理的,不能与autowiring一起工作。很高兴能得到帮助,谢谢!

qkf9rpyu

qkf9rpyu1#

您正在尝试在azure函数http请求处理程序(一个特定于云提供程序的非常薄的适配器)中使用spring自动连接,该适配器在spring函数外部解耦。这就是为什么它在那里不起作用。适配器中不应该有任何业务逻辑。但是,如果您在任何spring控制器/服务中使用di,它将像在常规spring引导应用程序中一样工作。
你可以查看这个在azure函数中使用springcloud的便利博客文章。

相关问题