Spring Data REST: использовать сервис вместо CrudRepository? - PullRequest
0 голосов
/ 08 июля 2020

Я просто изучаю библиотеку Spring Data REST для создания REST API.

Но во многих примерах я вижу, что REST API создается из CrudRepository.

Я Хотите знать, действительно ли это полезно в производстве? Мне кажется, что легко что-то настроить и быстро запустить, но я бы предпочел связать REST API с «настоящей» службой, а не «просто» с репозиторием.

Что вы думаете по этому поводу ?

С уважением, Б.

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Вы можете добавить свой собственный контроллер, который будет использовать вашу службу.

Например, домен Booking и BookingRepository.

Обратите внимание, что если вы поместите @RequestMapping(path = "bookings") в Контроллер, все конечные точки, предоставляемые Spring Data REST, будут переопределены и недоступны. Поэтому поместите в методе @RequestMapping и его вариации, такие как @PutMapping.

Если метод контроллера имеет @PostMapping("bookings"), то конечная точка POST, предоставляемая Spring Data REST, будет заменена этим настраиваемым метод контроллера.

@RepositoryRestController
public class BookingController {

    private final BookingService bookingService;

    @PostMapping("/bookings")
    public ResponseEntity create(@RequestBody Booking booking) {
        ...
    }
}

Если метод контроллера имеет другой путь сопоставления запросов, то все конечные точки, предоставляемые Spring Data REST, сохраняются.

@RepositoryRestController
public class BookingController {

    private final BookingService bookingService;

    @PutMapping("/bookings/{id}/confirm")
    public ResponseEntity confirm(@PathVariable String id) {
        ...
    }
}

Вы можете найти полный код моего BookingController на Github

0 голосов
/ 09 июля 2020

Уровень репозитория , предназначенный для сохранения или извлечения объектов вашего домена из базы данных.

Уровень обслуживания должен содержать некоторые бизнес-логи c, которые выполняются в домене объекты.

Если все, что вам нужно, это просто получить объекты домена из базы данных - вам действительно не нужны никакие службы в вашем приложении. Вот почему многие примеры генерируются из CrudRepository - этот интерфейс обеспечивает базовую c функциональность для передачи данных в / из базы данных.

Но если вам нужно выполнить некоторые дополнительные c logi * для объектов, помимо простой передачи данных - вам нужны отдельные услуги.

...