#spring #spring-boot #spring-data-jpa #rest #project-structure
Вопрос:
Я работал с Spring Boot Data JPA, и в целом структура проекта будет выглядеть так
my-app/
├─ com.company/
│ ├─ model/
│ ├─ controller/
│ ├─ service/
│ ├─ repository/
│ ├─ MyAppMainClass.java
где каждая папка представляет свою функцию в общем смысле.
model/ has entity classes
controller/ has controller classes that have the routes configured for the app
service/ has service classes that have the logic to process a request
repository/ has repository classes that interact with the database and get the response back
Теперь у меня есть очень простой проект, в котором у меня нет компонента базы данных, но все, что мне нужно сделать, это вызвать несколько других API REST и вернуть ответ.
Итак, должен ли я следовать той же структуре и просто удалить папку репозитория и поместить все вызовы других API REST в классы в папке службы?
Или есть какая-либо другая структура, которая, как правило, лучше подходит для этого? Может быть, если есть какие-то несоответствия в моем понимании всего этого, пожалуйста, поправьте меня. Спасибо 🙂
Ответ №1:
Я бы заменил пакет репозитория на потребительский пакет. И создайте для каждого ресурса потребителя.
my-app/
├─ com.company/
│ ├─ model/
│ ├─ controller/
│ ├─ service/
│ ├─ consumer/
│ ├─ MyAppMainClass.java
Комментарии:
1. Ресурс для каждого потребителя — можете ли вы объяснить, что такое ресурс и потребитель? (Насколько я понимаю, ресурс-это класс .java, а потребитель-это URL-адрес API, который мы называем 🤔. Если это так, то как мне точно заполнить эти классы?)
2. Под ресурсом я подразумевал определение ресурса, данное архитектурой rest (пример /api/пользователь определяет пользовательский ресурс). Потребители-это ваш источник данных, вместо того, чтобы загружать ваши данные из базы данных, вы будете получать их из внешнего ресурса. если бы мне пришлось использовать пользовательский ресурс, я бы создал класс UserConsumer, который отвечал бы за создание http-запроса, обработку аутентификации / авторизации, выполнение http-вызова и обработку любого механизма повторной попытки
Ответ №2:
Просто удалите пакет репозитория,
my-app/
├─ com.company/
│ ├─ model/
│ ├─ controller/
│ ├─ service/
│ ├─ MyAppMainClass.java