我正在用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一起工作。很高兴能得到帮助,谢谢!
1条答案
按热度按时间qkf9rpyu1#
您正在尝试在azure函数http请求处理程序(一个特定于云提供程序的非常薄的适配器)中使用spring自动连接,该适配器在spring函数外部解耦。这就是为什么它在那里不起作用。适配器中不应该有任何业务逻辑。但是,如果您在任何spring控制器/服务中使用di,它将像在常规spring引导应用程序中一样工作。
你可以查看这个在azure函数中使用springcloud的便利博客文章。