JAVA+Azure函数中的依赖注入(IoC)



我正在使用一个用Java编写的Azure函数从REST API检索数据并将其插入mongo数据库。我正试图将应用程序分为不同的层,就像我通常对web应用程序所做的那样——目前我只将存储mongo中数据的存储库提取到一个单独的类中,所以我的函数类看起来是这样的(我省略了触发器、错误处理等(

public class SensorFunctions {
@FunctionName("saveSensors")
public void saveSensors(
final ExecutionContext context) {
SensorRepository sensorRepository = new SensorRepository();
new SensorAPI().retrieveSensors()
.forEach(sensorRepository::saveSensor);
}
}

我更喜欢使用一些IoC机制,这样我就不必自己实例化repository和其他类,但我可以做一些类似的事情

public class SensorFunctions {
@Inject
SensorRepository sensorRepository;
@Inject
SensorAPI sensorAPI;
@FunctionName("saveSensors")
public void saveSensors(
final ExecutionContext context) {
sensorAPI.retrieveSensors()
.forEach(sensorRepository::saveSensor);
}
}

Azure功能是否可能?如果是这样,是否可以创建一个自动配置,或者我是否需要在每个功能开始时手动触发IoC容器的配置(我将在一个项目中拥有多个功能(。由于成本取决于函数的计算时间,我更喜欢尽可能轻的解决方案

目前,您可以使用Spring Framework仅对HTTP请求使用Azure功能(而不是绑定。

以下是如何使用的示例

我知道现在有一项工作正在进行中,以支持Azure函数的依赖项注入在这里输入链接描述

Azure函数的Java开发人员参考(https://learn.microsoft.com/en-us/azure/azure-functions/functions-reference-java)现在包括信息,以及Guice和Dagger的例子。

示例:https://github.com/Azure/azure-functions-java-worker/tree/dev/samples/dependency-injection-example

最新更新