将 spring 数据存储库注入 spring 云函数
Injecting spring data repository into spring cloud function
我想在 spring 云功能中使用 spring 数据存储库功能。
我已经使用 Azure 提供商克隆了 spring 云功能:https://github.com/spring-cloud/spring-cloud-function/tree/2.2.x/spring-cloud-function-samples/function-sample-azure
我在本地和 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);
}
}
示例 mongo 回购:
import org.springframework.data.mongodb.repository.MongoRepository;
public interface FooRepository extends MongoRepository<Foo, String> {
}
结果是 NullPointerException。知道 spring 云函数是否可行吗?
你注入错误的地方。 FooHandler 只是调用 uppercase
函数的委托。因此,而是将其注入函数本身。
@Bean
public Function<Foo, Bar> uppercase(FooRepository fooRepository) {
return foo -> {
// do whatever you need with fooRepository
return new Bar(foo.getValue().toUpperCase());
};
}
我想在 spring 云功能中使用 spring 数据存储库功能。
我已经使用 Azure 提供商克隆了 spring 云功能:https://github.com/spring-cloud/spring-cloud-function/tree/2.2.x/spring-cloud-function-samples/function-sample-azure
我在本地和 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);
}
}
示例 mongo 回购:
import org.springframework.data.mongodb.repository.MongoRepository;
public interface FooRepository extends MongoRepository<Foo, String> {
}
结果是 NullPointerException。知道 spring 云函数是否可行吗?
你注入错误的地方。 FooHandler 只是调用 uppercase
函数的委托。因此,而是将其注入函数本身。
@Bean
public Function<Foo, Bar> uppercase(FooRepository fooRepository) {
return foo -> {
// do whatever you need with fooRepository
return new Bar(foo.getValue().toUpperCase());
};
}