Pull to refresh

Comments 11

А архитектура-то приложения неправильная. DAO-слой занимается управлением транзакцией, что приводит к неконсистентным данным.

Такой небольшой проект и без Lombok'а. А почему контроллеры ResponseEntity не возвращают?

А зачем, если можно не возвращать?)) Можно даже опшинал прокидывать, все нормально отработает

Аннотация RestController включает в себя ResponseBody. Нет необходимости отдавать ResponseEntity в каждом методе

По моему опыту могу добавить, что контроллеры весьма неплохо разносить по сущностям - UserController, TaskController и т.п. В большом проекте очень много эндпоинтов и класс WebController в вашей интерпретации выйдет очень большим, заодно узнаете про @RequestMapping. Успехов.

Большое количество шаблонного и в значительной части ненужного кода. И всё ради использования спринг и следования модному веянию "всё на микросервисах".

Второй момент - за кадром оставлена большая часть работы, касающаяся взаимодействия с пользователем. Она включает браузерную часть и серверную. Браузерную часть на спринге, понятно, вообще не стоит пробовать писать, но если писать серверную, то мы увидим ещё больше шаблонов и ещё больше ненужного текста.

В целом данный пример является стандартным для всех учившихся по методу "делай только так, и никак иначе, потому что я так сказал". И текст в итоге получился таким же приказом следовать всё тому же "я так сказал".

Если же разумно подходить к делу, то окажется, что все так называемые "стартеры" из спринга ускоряют только простейшие составляющие проекта, которые и без них заняли бы совсем немного времени в сравнении с наполнением полезным для бизнеса функционалом. А потому экономия на генерации микросервиса через спринг становится неоправданной не только из-за несущественности сэкономленного времени, но, самое важное, из-за необходимости везде тащить за собой навязываемую спрингом шаблонную модель работы, которая во многом неудобна, а местами просто вредна (например - навязывание показанного выше подхода к взаимодействию с БД).

ЗЫ. Интересно, как автору удалось слить карму в минус 33, имея всего одну статью и не имея ни одного комментария? На лицо какая-то нездоровая особенность системы.

Ох, сколько вопросов.


  1. Почему Builder-классы пишутся "руками" и не используется Lombock?
  2. Почему data-слой реализован через JDBC, а не Spring Data и какой-нибудь UserRepo extends JpaRepository ?
  3. Почему в тестовых запросах есть только happy path? Что должен ожидать неофит, если сделает тестовый запрос на создание пользователя "admin"?
  4. Почему проверка isUserExists() реализована через ловлю исключения, а не специфический запрос к БД?
  5. Действительно ли нужны все бины и параметры в DatabaseConfiguration для первого проекта?
  6. На ваш взгляд, является ли хорошей практикой бросание исключений в контроллере, когда нет обработчиков исключений?

Пока у меня нет впечатления, что описанный вами подход — это "современная серверная разработка".

Ну на второй вопрос можно ответить, что для скорости))

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'databaseConfiguration' defined in file [/Users/valp/IdeaProjects/web/build/classes/java/main/com/example/configuration/DatabaseConfiguration.class]: Unexpected exception during bean creation; nested exception is java.lang.IllegalArgumentException: Could not resolve placeholder 'db.username' in value "${db.username}"

Я понял, что application.yml не найден и параметры оттуда не прочитаны. А что сказать чтобы его наши?

Никого не смутило отсутствие аннотации Service на сервисе?

Спасибо - сэкономил мне время на попытки понять на что ругается IDEA.

Sign up to leave a comment.

Articles