Внедрение хранилища весенних данных в функцию весеннего облака
Я хотел бы использовать функциональность репозитория данных Spring в облачной функции Spring.
Я клонировал функцию весеннего облака с провайдером Azure: https://github.com/spring-cloud/spring-cloud-function/tree/2.2.x/spring-cloud-function-samples/function-sample-azure
У меня он работает как локально, так и на лазурном.
Я хотел бы сделать следующее:
public class FooHandler extends AzureSpringBootRequestHandler<Foo, Bar> {
@Autowired
private FooRepository fooRepository;
@FunctionName("uppercase")
public Bar execute(
@HttpTrigger(name = "req", methods = { HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<Foo>> foo,
ExecutionContext context) {
fooRepository.insert(foo.getBody().get());
return handleRequest(foo.getBody().get(), context);
}
}
Пример монго репо:
import org.springframework.data.mongodb.repository.MongoRepository;
public interface FooRepository extends MongoRepository<Foo, String> {
}
Результатом является NullPointerException. Есть идеи, возможно ли это с весенними облачными функциями?
1 ответ
Решение
Вы вводите это в неправильном месте. FooHandler является просто делегатом для вызова uppercase
функция. Так что вместо этого введите его в саму функцию.
@Bean
public Function<Foo, Bar> uppercase(FooRepository fooRepository) {
return foo -> {
// do whatever you need with fooRepository
return new Bar(foo.getValue().toUpperCase());
};
}