Как структурировать проект spring boot, который не взаимодействует с базой данных

#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