Skip to content

Instantly share code, notes, and snippets.

@ram0973
Last active May 28, 2023 19:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ram0973/fffbdb99a1ece812ab56bf2ee389c429 to your computer and use it in GitHub Desktop.
Save ram0973/fffbdb99a1ece812ab56bf2ee389c429 to your computer and use it in GitHub Desktop.
Мысли
Приветствую, как вам такая заготовка для проекта:
Основная идея - иметь базу, с которой можно начинать, в духе Минимализма, но как можно более приближенную к реальности, и которая
поможет выбрать альтернативы:
0. последний Спринг Бут и Java 20 + Rest API, чтобы рассмотреть последние фишки типа spring-boot-docker-compose или TestContainers.
Maven или Gradle? Gradle намного лаконичней
1. Сущности BaseModel, Person + enum State, PersonRole (m2m), UserDetailService.Можно продемонстрировать все остальные виды связей
(One2One, One2Many), например, добавить ещё одну последнюю сущность Article, нужно ли делать обратные связи. Postgresql.
Использовать даты createdAt, updatedAt и обосновать как работать с часовыми поясами.
Что-то можно взять отсюда - https://github.com/JavaOPs/bootjava/tree/patched
2. Миграции - обосновать выбор Liquibase и sql миграций )). Как лучше организовать работу (это в ваших видео уже было)
3. Конфигурации - dev, prod, test. И файл .env. Описать как запускать.
4. Правильное использование Lombok на @Entity - https://jpa-buddy.com/blog/lombok-and-jpa-what-may-go-wrong/
5. Spring Data Rest - https://squidex.jugru.team/api/assets/srm/94f45778-43bb-402d-b765-08daef9fd4b9/rustam-kuramshin.pdf
6. Минимальные тесты. Буквально парочку. А можно и TDD
7. Как лучше сделать возврат ошибок и http кодов - @RestControllerAdvice или что-то другое. Валидация в jakarta.
8. На проде запускать БД в контейнере или напрямую.
9. Что взять для аутентификации - или Spring Session в Redis (минимализм) + CSRF + http-only cookie, или новый Oauth server спринга
https://www.youtube.com/watch?v=FoyAvzU5fO0&lc=Ugw72138XfGoZ6ha6QJ4AaABAg.9phVc9qxfQ-9q3xYMxQE-V ,
чтобы не писать JWT ручками. И почему такой выбор. Обосновать безопасность.
10. Spring security с использованием ролей и аутентификации из БД.
==== На закуску
11. Добавить возможность аутентификации Oauth например c Гугла.
12. Кэши Hibernate 1-го и 2-уровня.
13. Добавить Etag которые брать из updatedAt или как-то ещё. Или это не актуально?
14. Простейший CI/CD
15. Возможность отозвать сессии, токены.
16. Api.http и OpenApi.yaml ?. Хотя последний ужасно многословный.
Может это? https://editor.jsight.io/
17. @Transactional
18. Отладка Security (debug = true)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment