| <dependencies> |
| <dependency> |
| <groupId>org.springframework.boot</groupId> |
| <artifactId>spring-boot-starter-webflux</artifactId> |
| </dependency> |
| <dependency> |
| <groupId>org.springframework.boot</groupId> |
| <artifactId>spring-boot-starter-test</artifactId> |
| <scope>test</scope> |
| </dependency> |
| </dependencies> |
| public interface UserService { |
| |
| |
| Mono<User> getUserById(int id); |
| |
| |
| Flux<User> getAllUser(); |
| |
| |
| Mono<Void> saveUserInfo(Mono<User> user); |
| |
| } |
| @Repository |
| public class UserServiceImpl implements UserService { |
| |
| |
| private final Map<Integer,User> users = new HashMap<>(); |
| |
| |
| public UserServiceImpl() { |
| this.users.put(1,new User("lucy","nan",20)); |
| this.users.put(2,new User("mary","nv",30)); |
| this.users.put(3,new User("jack","nv",50)); |
| } |
| |
| |
| @Override |
| public Mono<User> getUserById(int id) { |
| return Mono.justOrEmpty(this.users.get(id)); |
| } |
| |
| |
| @Override |
| public Flux<User> getAllUser() { |
| return Flux.fromIterable(this.users.values()); |
| } |
| |
| |
| @Override |
| public Mono<Void> saveUserInfo(Mono<User> userMono) { |
| return userMono.doOnNext(person -> { |
| |
| int id = users.size()+1; |
| users.put(id,person); |
| }).thenEmpty(Mono.empty()); |
| } |
| |
| } |
| @RestController |
| public class UserController { |
| |
| |
| @Autowired |
| private UserService userService; |
| |
| |
| @GetMapping("/user/{id}") |
| public Mono<User> geetUserId(@PathVariable int id) { |
| return userService.getUserById(id); |
| } |
| |
| |
| @GetMapping("/user") |
| public Flux<User> getUsers() { |
| return userService.getAllUser(); |
| } |
| |
| |
| @PostMapping("/saveuser") |
| public Mono<Void> saveUser(@RequestBody User user) { |
| Mono<User> userMono = Mono.just(user); |
| return userService.saveUserInfo(userMono); |
| } |
| |
| } |
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术