我想撰寫第一個程式webFlux和ReactiveMongoRepository. 我有存盤庫:
@Repository
public interface personRepository extends ReactiveMongoRepository<Person,String> {
Mono<Person> save(Person person);
}
我的服務:
@AllArgsConstructor
@Service
public class personServiceImpl implements personService{
personRepository repository;
@Override
public Flux<Person> findAll() {
return repository.findAll();
}
@Override
public Mono<Person> saveOrUpdate(Person person) {
CompletableFuture<Person> future = CompletableFuture.supplyAsync(() -> {
repository.save(person);
return person;
});
return Mono.fromFuture(future);
}
}
其余服務本身:
@RestController
@AllArgsConstructor
public class personController {
personServiceImpl personService;
@GetMapping("/all")
Flux<Person> getAllPerson(){
return personService.findAll();
}
@PostMapping("/save")
public Mono<Person> post(@RequestBody Person user) {
System.out.println("inside***************");
return personService.saveOrUpdate(user);
}
}
現在,當我想測驗服務并通過郵遞員保存或查找每個人時,出現錯誤:
"path": "/all",
"status": 405,
"error": "Method Not Allowed",
也就是按照我的理解,請求連函式都沒有到達,但是馬上就拋出一個錯誤,這里哪里會出錯呢?


uj5u.com熱心網友回復:
問題似乎出在saveOrUpdate()方法上。您實際上并不需要CompletableFuture(在這種情況下為什么要這樣做?)并且以下內容應該有效:
@AllArgsConstructor
@Service
public class personServiceImpl implements personService{
personRepository repository;
@Override
public Flux<Person> findAll() {
return repository.findAll();
}
@Override
public Mono<Person> saveOrUpdate(Person person) {
return repository.save(person);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379576.html
上一篇:如何防止FilterRegistrationBean和RequestFilter阻塞API方法呼叫?
下一篇:多個物體中的地址物體而不指定它
