将Spring数据存储库注入Spring Cloud功能

时间:2019-05-02 16:03:31

标签: spring-data spring-cloud-function

我想在spring cloud功能中使用spring数据存储库功能。

我已经用azure提供程序克隆了https://github.com/spring-cloud/spring-cloud-function/tree/2.2.x/spring-cloud-function-samples/function-sample-azure

的spring cloud功能。

我让它在本地以及天蓝色运行。

我想执行以下操作:

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);
    }

}

mongo回购示例:

import org.springframework.data.mongodb.repository.MongoRepository;

public interface FooRepository extends MongoRepository<Foo, String> {
}

结果是NullPointerException。知道使用Spring Cloud功能是否可能?

1 个答案:

答案 0 :(得分: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());
    };
}