编写控制器和服务类
最后,我们需要编写控制器和服务类来处理HTTP请求和业务逻辑。以下是示例代码:
UserController.java:
代码语言:javascript复制@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public Mono<User> getUserById(@PathVariable String id) {
return userService.getUserById(id);
}
}
UserService.java:
代码语言:javascript复制@Service
public class UserService implements ReactiveUserDetailsService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Override
public Mono<UserDetails> findByUsername(String username) {
return userRepository.findById(username)
.map(user -> User.withUsername(user.getUsername())
.password(user.getPassword())
.roles(user.getRoles())
.build());
}
public Mono<User> getUserById(String id) {
return userRepository.findById(id);
}
}
在上面的代码中,我们定义了一个控制器和一个服务类。控制器用于处理HTTP请求,并使用UserService类来获取用户详细信息。服务类实现了ReactiveUserDetailsService接口,用于获取用户详细信息。