Внедрение хранилища весенних данных в функцию весеннего облака - PullRequest
0 голосов
/ 02 мая 2019

Я бы хотел использовать функциональность репозитория данных 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 Ответ

1 голос
/ 03 мая 2019

Вы вводите его не в том месте.FooHandler - просто делегат для вызова функции uppercase.Так что вместо этого введите его в саму функцию.

@Bean
public Function<Foo, Bar> uppercase(FooRepository fooRepository) {
    return foo -> {
        // do whatever you need with fooRepository
        return new Bar(foo.getValue().toUpperCase());
    };
}
...