Чай, Java, покодим? Разрабатываем микросервис с нуля на Spring+Java+PostgreSQL (2 часть).
На этом стриме мы продолжим разрабатывать микросервис с нуля на стеке Spring+Java+PostgreSQL. Я постараюсь подробно объяснять свои шаги при разработке и интересующие вас вопросы, которые вы сможете задать чате.
Мы организуем наш сервис в соответствии с подходом MVC. Для этого создадим DTO представление наших сущностей базы данных, и стандартные MVC контроллеры (Spring Web framework) для возможности работы с ними. Создадим JPA репозитории для работы с БД (Spring JPA), используем Hibernate для объектно-реляционного представления нашей БД. Для компоновки наших зависимостей будем использовать сборщик Gradle.
Поддержать автора - www.donationalerts.com/r/maycode
Мой Telegramm - t.me/may_code
Мой GitHub - github.com/FriMay
Отличная группа для Java разработчика (фичи, туториалы, статьи) - javatutorial
Оставить отзыв о трансляции - forms.gle/xTeV2v3UrZRqyzwL7
Пікірлер: 44
пушка в качестве стартового проекта, ты молодец, я много от тебя узнал, не прекращай пж
@maycode0
27 күн бұрын
Постараюсь ;)
Жду продолжения, тот канал по программированию, которого так не хватало)
Спасибо за твою работу, все круто, продолжай, пили контент почаще Удачи каналу и автору
Отличный стрим!
Очень круто! Давай Spring Security на это накатим=)
Я требую продолжения банкета! :D
Thank you
Thanks bro
Очень надеюсь что это не конец. Понравились твои видеоролики! Это твой единственный канал?
@maycode0
2 жыл бұрын
Да, единственный)
Сделал по твоим следам этот микросервис, все заработало, очень круто получилось! Когда делали change task мозг чуть не закипел, но твое решение этой задачи в режиме онлайн божественно=)) Если есть возможность, то лучше на темной теме в IDE работать=)
@maycode0
2 жыл бұрын
К сожалению темная тема сильно кропает изображение) Спасибо за отзыв, рад что у вас все получилось)
@alexeymirniy
2 жыл бұрын
@@maycode0 постараюсь найти время и дописать контроллер для Task, я так понимаю там по аналогии с TaskState все нужно сделать, если получится вернусь и выложу тут код
@maycode0
2 жыл бұрын
Окей)
будет ли что-нибудь новое?
добрый день. Объясните плиз в чем тут вообще микросервис? Это обычный монолит
Привет, а для чего используется метод saveAndFlush в классе TaskStateController, если мы не получаем обратно сохраненное значение из бд? (Например, в методах replaceOldTaskStatePosition и changeTaskStatePosition в некоторых местах достаточно использовать save?) Еще хотел спросить по поводу подхода маппинга сущностей в DTO, в данном случае используется фабрика + билдер. Насколько я знаю, для этого широко применяется MapStruct. Можешь пару слов рассказать, почему выбран именно первый подход здесь и в чем его преимущества перед MapStruct?
@maycode0
3 ай бұрын
Про MapStruct - уже отвечал. Подход ручной конвертации гибок и всегда контролируется до мелочей. Мне так привычнее. По поводу saveAndFlush так просто не скажу, давно был стрим) Видимо мне надо было в рамках транзакции пропихнуть изменения в БД раньше, чем сама транзакция закончится
@themistocies50
3 ай бұрын
Понятно. Насколько я понял, MapStruct уместно использовать при большом кол-ве полей, чтобы не писать много кода.
А будет реально развернута микросервисная архитектура, 2 и более приложение, может подключение кафки с докером, рассказ о Спринг Клауде(типа Еврика, Зипкин, Хистрикс и т.д.) . Понять как настроить продусера и консьюмера в кафке . Как настроить множество таблиц для каждого микросервиса и как их связывать, это было бы гуд. Конечно уроки гуд, но по ним можно понять как монолит пилить, а не микросервис)) Просто охота разобраться именно в микросервисах, как их ставить, как клауд конфиг пилить и как с ним связывать остальные приложения, еще круто если сможет показать наглядно как реализовать CI/CD понятно, что это Девопс, но хотя бы как это выглядит в реале(((( Просто вообще в русских просторах нет уроков с нуля для такой темы... И не до конца понимаю как это работает на практике А пилить типа хеллоу ворд для микросервисной архитектуры смешно
@maycode0
2 жыл бұрын
Честно говоря не владею ни докером особо, ни спринг клаудом в необходимой мере, чтобы это показывать, показать как связать два сервиса по реббиту- не сложно, но выносить в отдельную тему, что я уже развивал в одном из стримов не знаю насколько целесообразно) По поводу девопса - тоже не ко мне и на реальной практике CI/CD я могу только объяснит как это выглядит в нашей архитектуре, но на практике показать это невозможно, не моя область отвественности)
@user-fj7on8le9g
2 жыл бұрын
@@maycode0 понял ))было бы круто если показали уже так скажем актуальные штуки на будующие , а то это мейнстримом стала, клауд, микросервисы, докер, а то темы сложны для понимания, а на русских просторах почти нет ничего (((
@maycode0
2 жыл бұрын
Я уже объяснил, да, круто, но я этим не пользуюсь -> нет понимания, при помощи которого я мог бы это показать)
Спасибо за контент, вопрос, спустя 2 года автор так же хейтит сервисы?))
@maycode0
7 ай бұрын
Нэт) Автор вкурил когда они нужны, но использует пока так же редко, пока нет острой необхожимости
Зачем реализовывать логику перемещения таск, если это задача фронта, нет? жесткая простыня и захардкоженная логика получается в контроллере)
@maycode0
2 жыл бұрын
А как фронт будет перемещать таски? Ему нужен метод для этого, нет?) или он будет удалять и новую создавать?)
@chupa00
2 жыл бұрын
@@maycode0 Менять id таск листа?
@chupa00
2 жыл бұрын
@@maycode0 Не думай, что я докапываюсь. Контент хороший)
@maycode0
2 жыл бұрын
А как это в видео реализовано?)
@maycode0
2 жыл бұрын
Я просто частично не помню, давно было
блин щас посмотрел, а ты по факту сделал монолит, где микросервис то?
@maycode0
2 жыл бұрын
Я создал сервис ориентированный на выполнение конкретной задачи) Монолит это в моем понимание набор таких сервисов (авторизация, сам сервис который мы разрабатываем и тд) который помимо своей основной задачи (отслеживание задач) занимается в том числе и вопросом авторизации и так далее.
@maycode0
2 жыл бұрын
Если я не прав, приведи тогда правильный пример, как этот монолит с твоей точки зрения, может стать микросервисом)
@user-fj7on8le9g
2 жыл бұрын
@@maycode0 Не ты круто написал. Но я ожидал, как ты покажешь как настроить взаимосвязь микросервисов, что дальше делать то . Покажешь кафку или еще что-то подобно, что сейчас является мейнстримом в области IT, а ты написал приложение которое существует само по себе, они никак не связано с другим микросервисам, как раз об этом. То есть показать как связать 2 мини приложения и т.д. просто все используют фразу микросервис, но по факту пишут 1 сервис. а микросервис как раз говорит о том что несколько сервисов связаны друг с другом, но существует как отдельное приложение со своей функциональной частью, но за обучение спасибо!
@maycode0
2 жыл бұрын
Есть стрим отдельный по RabbitMQ, я там тоже сделал все в рамках одного сервиса, но это спокойно разноситься в разные кодовые базы и разбивается на модули)
@user-fj7on8le9g
2 жыл бұрын
@@maycode0 ну это понятно, круто когда покажешь именно всю концепцию, как разбить по какой логике, как связывать, как реально это работает)) то есть показатель реальную идею, что вот представьте есть монолит делает такие то вещи, а теперь мы хтим вывести 2-3 микросервиса, вот так они взаимодействуют и т.д.)