Мне интересно, есть ли способ оптимизировать в SpringBoot 'RestController
выборку необходимых сущностей.
Для этого примера я использую репозитории SpringData JPA и Jackson.
Давайте предположим, что у меня есть эта сущность Пользователь.
public class User() {
UUID id;
String name;
String surname;
}
У меня также есть UserRepository
, который простирается от JpaRepository
, UserService
и UserResolver
, который выглядит следующим образом:
@RequiredArgsConstructor
public class UserResolver extends GenericResolver<User> {
@NonNull
UserRepository repo;
@Override
JpaRepository<User, UUID> getRepository() {
return repo;
}
}
Итак, что бы я хотел отойти от текущей реализации, такой как:
@RestController
@RequestMapping("/api")
class MyController {
@Autowired UserService userService;
@GetMapping("/user/{id}")
public User getUserById(@PathParam String id) {
User myUser = userService.load(id);
...
// Do Whatever with the user
return myUser;
}
}
К такому методу:
@GetMapping("/user/{id}")
public User getUserById(@PathParam User myUser) {
...
// Do Whatever with the user
return myUser;
}
Я знаю, что это фиктивный случай, но в некоторых ситуациях это сэкономит время и будет более оптимальным для загрузки всех зависимостей непосредственно из его идентификатора.