en
Feedback
Уголок сельского джависта

Уголок сельского джависта

Open in Telegram

Пишу на Java и Kotlin, иногда полную ерунду, люто топлю за Spring и чистую архитектуру. Консультирую. Чат: https://t.me/shurik_codes_group

Show more
2 044
Subscribers
No data24 hours
+37 days
+1930 days
Posts Archive
01. Разработка веб-приложений со Spring - Разработка проектов со Spring В первом ролике цикла я демонстрирую разработку класс
01. Разработка веб-приложений со Spring - Разработка проектов со Spring В первом ролике цикла я демонстрирую разработку классического веб-приложения со Spring WebMVC, Thymeleaf и Jakarta Bean Validation. В ролике демонстрируется несколько способов создания нового проекта на основе Spring Boot, вкратце описывается многоуровневая архитектура и шаблон проектирования MVC, создание базовых компонентов приложения, валидация данных и интернационализация. Кроме этого продемонстрировано несколько способов запуска приложения на основе Spring Boot. В цикле роликов "Разработка проектов со Spring" я рассказываю на простых примерах о процессе разработки веб-приложений и REST-сервисов на языке программирования Java с использованием экосистемы Spring. Данный цикл охватывает разработку классических и реактивных проектов, вопросы их сопровождения, такие как документация и мониториг, адаптацию их к облачной инфраструктуре и процесс их развёртывания в Docker и Kubernetes. Уже завтра!)

SC24EP22 Helm - Введение в Helm - Написание шаблонов для сервисов - Развёртывание сервисов - Использование готовых шаблонов для инфраструктуры Изначально в планах была запись 25 роликов, но два ролика я объединил в один (№19 Docker) и ещё два просто вычеркнул из цикла, так как они в целом не связаны с основной темой. Вполне возможно, что ещё два ролика (№20 Запуск сервисов в Kubernetes и №21 Kubernetes без Spring Cloud) тоже будут объединены, всё зависит от их продолжительности. Будет ещё один ролик - вводный, и, возможно, ролик про "послевкусие". Начать публиковать ролики я планирую уже в следующий понедельник - 4 марта, если ничто не помешает.

И теперь я могу рассказать о составе цикла! Выглядит он следующим образом: Эпизоды 01-05: Веб-приложения на основе Spring WebMVC SC24EP01 Разработка веб-приложения со Spring WebMVC - Введение в Spring Boot и Spring Framework - Разработка простого веб-приложения с Spring WebMVC и Thymeleaf - Валидация данных с Jakarta Bean Validation - Интернационализация SС24EP02 Разработка REST-сервисов со Spring WebMVC - Разработка REST-сервиса - Использование RestClient SC24EP03 Работа с реляционными базами данных - Введение в JPA, Hibernate и Spring Data - Описание схемы БД в Flyway - Написание запросов к БД в Spring Data JPA SC24EP04 Аутентификация и авторизация в веб-приложениях - Введение в Spring Security - Форма входа и настройка источника данных о пользователях - Применение OAuth 2.0 и OIDC SC24EP05 Тестирование веб-приложений - Модульные тесты с JUnit 5 и Mockito - Интеграционные тесты с MockMvc, Testcontainers и WireMock Эпизоды 06-10: Реактивные веб-приложения на основе Spring Webflux SC24EP06 Разработка реактивного веб-приложения со Spring Webflux - Введение в реактивное програмиирование, Spring Webflux и Project Reactor - Разработка реактивного веб-приложения со Spring Webflux и Thymeleaf - Валидация данных с Jakarta Bean Validation - Интернационализация SС24EP07 Разработка реактивных REST-сервисов со Spring Webflux - Разработка REST-сервисов - Использование WebClient SC24EP08 Работа с реактивными базами данных - Введение в MongoDB и Spring Data - Написание запросов к БД в Spring Data MongoDB SC24EP09 Аутентификация и авторизация в реактивных веб-приложениях - Введение в Spring Security Reactive - Применение OAuth 2.0 и OIDC SC24EP10 Тестирование реактивных веб-приложений - Модульные тесты с JUnit 5, Mockito и Project Reactor - Интеграционные тесты с WebTestClient, Testcontainers и WireMock SC24EP11 Документирование REST-сервисов - Применение Spring RestDocs - Применение Springdoc - Введение в OpenAPI и Swagger Эпизоды 12-15: Мониторинг и администрирование приложений SC24EP12 Spring Boot Admin - Создание и настройка сервиса Spring Boot Admin - Настройка клиентов Spring Boot Admin SC24EP13 Сбор метрик с Actuator, Micrometer и VictoriaMetrics - Настройка экспорта метрик с Actuator и Mictometer - Сборка метрик с VictoriaMetrics - Визуализация метрик в Grafana SC24EP14 Сбор логов с Logback и Grafana Loki - Настройка сборки логов в Grafana Loki - Визуализация логов в Grafana SC24EP15 Сбор трассировок в Grafana Tempo - Введение в трассировки - Настройка сборки трассировок в Micrometer Metrics Tracing и Grafana Tempo - Анализ трассировок в Grafana Эпизоды 16-18: Spring Cloud SC24EP16 Реестр сервисов с Spring Cloud Netflix Eureka - Создание сервиса Spring Cloud Netflix Eureka - Регистрация сервисов в Spring Cloud Netflix Eureka - Использование балансировки нагрузки на стороне клиента - Использование поиска сервисов в Spring Boot Admin SC24EP17 Централизованное хранение конфигураций со Spring Cloud Config - Создание сервиса Spring Cloud Config - Хранение конфигов в git - Настройка приложения для использования Spring Cloud Config SC24EP18 Единая точка входа со Spring Cloud Gateway - Создание сервиса Spring Cloud Gateway - Настройка маршрутов - Введенеи в nip.io SC24EP19 Запуск сервисов в Docker и Docker Compose - Написание универсального Dockerfile для модулей проекта - Разврёртывание сервисов в Docker - Описание и развёртывание стека в Docker Compose SC24EP20 Запуск сервисов в Kubernetes - Введение в Kubernetes - Развёртывание сервисов в Kubernetes SC24EP21 Kubernetes без Spring Cloud - Ingress вместо Spring Cloud Gateway - ConfigMap вместо Spring Cloud Config - Service вместо Spring Cloud Netflix Eureka SC24EP22 Helm - Введение в Helm - Написание шаблонов для сервисов - Развёртывание сервисов - Использование г

Всем привет! 👋 У меня для вас хорошие новости! Запись цикла роликов о разработке проектов со Spring подходит к концу - на да
Всем привет! 👋 У меня для вас хорошие новости! Запись цикла роликов о разработке проектов со Spring подходит к концу - на данный момент записано 19 и смонтировано 8 роликов из 22. Не всё идёт по плану, да и качество материала мне не всегда нравится, но для перового захода, надеюсь, будет неплохо.

⌨️ Всем привет! Ну вот у меня и получилось записать очередной ролик, январь получился достаточно загруженным, поэтому получилось только в феврале, да и ролик мне не давался. Работа над большим циклом материалов про Spring тоже идёт - там уже записано 5 роликов из 23 запланированных, и пока что я вписываюсь в свои планы, так что в уже марте, скорее всего, я начну его публиковать.

Client, Resource Server, Login - Spring Security OAuth 2.0 В одном из предыдущих роликов я рассказал теорию об OAuth 2.0 и OI
Client, Resource Server, Login - Spring Security OAuth 2.0 В одном из предыдущих роликов я рассказал теорию об OAuth 2.0 и OIDC, а на этот раз предлагаю перейти к практике. Spring Security реализует практически полноценную поддержку протокола авторизации OAuth 2.0 и его расширения аутентификации OpenID Connect (OIDC), и с минимальными изменениями в своём проекте вы можете внедрить поддержку этих протоколов. В этом ролике я рассматриваю возможность применения Spring Security OAuth 2.0 для реализации сервера ресурсов, клиента и логина в веб-приложениях на основе Spring WebMVC и Spring Webflux. Так же в качестве сервера авторизации снова будет рассмотрен Keycloak, а так же процесс его настройки. Репозиторий проекта: https://github.com/alex-kosarev/spring-security-oauth ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть на Rutube ▶️ Смотреть на YouTube #java #spring #security #oauth #oidc #reactive #webflux #webmvc 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

❗️Всех с прошедшими праздниками! Хочу поделиться творческими планами на ближайшее время. Ещё в конце прошлого года у меня поя
❗️Всех с прошедшими праздниками! Хочу поделиться творческими планами на ближайшее время. Ещё в конце прошлого года у меня появилось запланировать написание цикла материалов о разработке проектов с экосистемой Spring, но в отличие от серии "Spring по верхам", с которой я начинал своё творчество, есть желание копнуть и вглубь, и вширь. Сейчас я как раз занимаюсь проработкой кода, который будет демонстрироваться в роликах и статьях, коих в цикле будет не меньше 20, а охват тем будет начинаться с создания проекта и заканчиваться развёртыванием проекта в Kubernetes! Но эти ролики я начну публиковать только после записи и монтажа всего цикла, так как хочу быть уверенным в том, что у меня всё получится. По планам я хочу начать публиковать ролики в начале марта (но это не точно). Да, такие амбициозные планы немного вносят коррективы в процесс написания самостоятельных материалов, поэтому на прошлой неделе ролика не было. Будет ли какой-нибудь ролик на этой неделе я тоже не знаю, но хочу что-нибудь рассказать.

Actuator, Micrometer, Victoria Metrics, Grafana - Мониторинг Spring Boot Мониторинг состояния сервисов является важной состав
Actuator, Micrometer, Victoria Metrics, Grafana - Мониторинг Spring Boot Мониторинг состояния сервисов является важной составляющей процесса сопровождения программного обеспечения. В этом ролике я демонстрирую, как при помощи Spring Boot Actuator и Micrometer можно экспортировать метрики в VictoriaMetrics, а затем визуализировать их в Grafana. Кроме этого я рассматриваю несколько простых примеров написания собственных метрик. ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть на Rutube ▶️ Смотреть на YouTube #java #spring #springboot #micrometer #grafana #prometheus #victoriametrics 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

Основы OAuth 2.0 и OpenID Connect При необходимости передачи данных пользователя сторонним приложениям надо как-то решать воп
Основы OAuth 2.0 и OpenID Connect При необходимости передачи данных пользователя сторонним приложениям надо как-то решать вопрос доступа - как предоставлять доступ к данным, не передавая стороннему приложения учётные данные пользователя - логин, пароль и т.д. И основным способом решения этого вопроса является фреймворк авторизации OAuth, который добавляет в эту схему сервер авторизации, а так же описывает сценарии взаимодействия между участниками для безопасного предоставления доступа сторонним приложениям к пользовательским данным. OpenID Connect - это слой идентификации и аутентификации, разработанный на основе OAuth и совместимый с ним. OIDC вводит идентификационный токен (ID Token), специфичные области применения (scope) ключей доступа, JWT и дополнительные эндпоинты. Спецификация OAuth довольно абстрактна, а OIDC - более конкретна, поэтому я в данном ролике рассматриваю OAuth именно на примере OIDC. В этом ролике я рассказываю об основах OAuth и OIDC: ролях, ключах доступа, клиентах, областях применения ключей доступа и способах предоставления доступа к защищённым ресурсам. ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть на Rutube ▶️ Смотреть на YouTube #oauth #oidc #openidconnect 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

Всем привет! На этой неделе ролика не будет, ибо много работы. Но, тем не менее, для следующего ролика я активно готовлю материал. А будет он, как я и обещал, про OAuth 2.0 и OIDC. А пока можете посмотреть ролик про меня любимого, который сняли коллеги из PR-отдела, за что им большое спасибо!

Мой год видеоблоггинга - ожидания, результаты, планы #влог #блог Всем привет! Сегодня 8 декабря, прошёл ровно год с момента п
Мой год видеоблоггинга - ожидания, результаты, планы #влог #блог Всем привет! Сегодня 8 декабря, прошёл ровно год с момента публикации первого ролика из серии "Spring по верхам", с которого я начал целенаправленно и систематически записывать и публиковать ролики. И по этому поводу я решил подвести итоги творческого года, среди которых более 100 000 просмотров, почти 4 000 подписчиков и очень тёплый приём публикой. Всем зрителям большое спасибо за внимание! ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть на Rutube ▶️ Смотреть на YouTube 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

Гексагональная архитектура и микросервисы Проектирование и разработка архитектуры программного обеспечения является неотъемле
Гексагональная архитектура и микросервисы Проектирование и разработка архитектуры программного обеспечения является неотъемлемой и крайне важной составляющей процесса разработки. Гибкая и хорошо проработанная архитектура значительно упрощает процесс разработки как монолитных проектов, так и проектов с микросервисным подходом. А в идеальных условиях архитектура должна позволять получить из одной кодовой базы как модульный монолит, так и набор микросервисов. На мой взгляд хорошей отправной точкой может стать гексагональная архитектура, которая является частной реализацией идей чистой архитектуры. В этом ролике я рассматриваю основные элементы гексагональной архитектуры, а так же демонстрирую её применение в процессе разработки простого сервиса, модульного монолита и набора микросервисов. Репозиторий проекта: https://github.com/alex-kosarev/selmag-parent ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть на Rutube ▶️ Смотреть на YouTube ▶️ Смотреть на Nuum #java #hexagonal #softwarearchitecture #microservices #monolith #modularmonolith 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

Access Control List (ACL) - Spring Security в деталях Основными подходами к реализации авторизации в информационных системах
Access Control List (ACL) - Spring Security в деталях Основными подходами к реализации авторизации в информационных системах являются RBAC и ABAC, однако их возможностей не всегда достаточно для обеспечения гибкого управления доступом, особенно в крупных корпоративных системах. В этом случае хорошей альтернативой может стать авторизация на основе списка правил доступа (Access Control List; ACL). Spring Security предоставляет собственную реализацию ACL, работа с которой будет продемонстрирована в этом ролике. Да, Spring Security ACL не отличается хорошей и детальной документацией, и более того, библиотека выглядит заброшенной, а в планах разработчиков - избавиться от неё в Spring Security 7, но я всё же предлагаю ознакомиться с данной библиотекой. Репозиторий с примерами кода: https://github.com/alex-kosarev/sandbox-spring-security-acl ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть на Rutube ▶️ Смотреть на YouTube #java #spring #springsecurity #acl 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

Хотел записать видео про Spring Security ACL, но данный модуль, вполне возможно, будет удалён из Spring Security 7.0, ставьте
Хотел записать видео про Spring Security ACL, но данный модуль, вполне возможно, будет удалён из Spring Security 7.0, ставьте палец вверх, если надо писать ролик про ACL

Авторизация - Spring Security в деталях Представить себе информационную систему, в которой все пользователи имеют одинаковые
Авторизация - Spring Security в деталях Представить себе информационную систему, в которой все пользователи имеют одинаковые неограниченные права практически невозможно - в абсолютном большинстве информационных систем пользователи обладают разными правами, в зависимости от выполняемых задач. Авторизация обеспечивает предоставление полномочий пользователям, а так же проверку их наличия у пользователя при необходимости. В этом ролике я постарался рассказать, что такое авторизация, какие основные способы её реализации существуют, а так же рассмотрел применение Spring Security для обеспечения авторизованного доступа к HTTP-эндпоинтам и методам. ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть в Rutube ▶️ Смотреть в YouTube #java #spring #springsecurity #abac #rbac #authorization #авторизация 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

Java нативно - GraalVM Native Image Ещё с самого начала моей карьеры разработчика программного обеспечения на платформе Java
Java нативно - GraalVM Native Image Ещё с самого начала моей карьеры разработчика программного обеспечения на платформе Java меня волновал вопрос: "А можно ли компилировать Java-код в нативные исполняемые файлы?", и я был далеко не один такой. И инструменты для компиляции Java-кода в нативные исполняемые файлы и библиотеки существовали, например тот же GNU C compiler for Java (gcj), хоть и с некоторыми нюансами. Но меня этот вопрос как-то не сильно волновал, так что дальше чтения теории я не ушёл, да и как-то забыл про это. Однако в 2019 году корпорация Oracle явила общественности новый проект - GraalVM, являющийся по сути JDK с компилятором Graal вместо HotSpot C1/C2 и набором дополнительных инструментов, одним из которых является native-image - инструмент для компиляции нативных исполняемых файлов и библиотек из Java-байткода. В этом ролике я рассмотрю три сценария использование native-image для компиляции Java-байткода в исполняемые файлы: - Компиляция одного класса - Компиляция простого проекта в Maven и Gradle - Компиляция проекта на основе Spring Boot в Maven и Gradle Кроме этого в ролике рассматривается компиляция со статическим связыванием (musl + GCC 10 и zlib 1.3) и запуск приложений в Docker. ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть на Rutube ▶️ Смотреть на YouTube #java #graal #graalvm #nativeimage #springboot #docker #maven #gradle 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

Spring Boot в контейнерах Разработку и развёртывание современного серверного программного обеспечения сложно представить себе
Spring Boot в контейнерах Разработку и развёртывание современного серверного программного обеспечения сложно представить себе без использования инструментов контейнеризации, ну, а Docker и вовсе, наверняка, на слуху у подавляющего большинства разработчиков. Упаковка в контейнеры проектов на платформе Java в целом задача не сложная, но имеет свои нюансы. В этой статье я рассмотрю следующие сценарии упаковки приложения на основе Spring Boot в OCI-образ: - Локальная сборка проекта с последующей упаковкой в Docker-образ - Полный цикл сборки проекта в Docker с помощью Dockerfile - Сборка образа при помощи Spring Boot Plugin и Paketo Buildpacks Все сценарии будут продемонстрированы с использованием Maven. 📖 Читать на сайте 📖 Читать в VK 📖 Читать в Telegraph #java #spring #springboot #docker #maven 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff

Вдогонку к предыдущему посту заготовка статьи про то, как собирать Docker-образы приложений на основе Spring Boot с использованием Gradle: https://github.com/alex-kosarev/spring-boot-docker-with-gradle Обе статьи опубликую на этой неделе, но не думаю, что они будут кардинально отличаться от заготовок. Когда будет следующий ролик сказать не могу - много работы и осенний простудифилис не дают готовить и записывать. #java #docker #springboot #gradle

По многочисленным заявкам трудящихся и учащихся выкладываю репу: https://github.com/alex-kosarev/spring-boot-docker-with-maven там же заготовка статьи, можете читать, информации даже больше, чем в ролике.

Spring Boot в контейнерах Разработку и развёртывание современного серверного программного обеспечения сложно представить себе
Spring Boot в контейнерах Разработку и развёртывание современного серверного программного обеспечения сложно представить себе без использования инструментов контейнеризации, ну, а Docker и вовсе, наверняка, на слуху у подавляющего большинства разработчиков. Упаковка в контейнеры проектов на платформе Java в целом задача не сложная, но имеет свои нюансы. В этом ролике я рассмотрю следующие сценарии упаковки приложения на основе Spring Boot в OCI-образ: - Локальная сборка проекта с последующей упаковкой в Docker-образ - Полный цикл сборки проекта в Docker с помощью Dockerfile - Сборка образа при помощи Spring Boot Plugin и Paketo Buildpacks Все сценарии будут продемонстрированы с использованием Maven и Gradle. ▶️ Смотреть в VK ▶️ Смотреть в Boosty ▶️ Смотреть в Дзене ▶️ Смотреть на Rutube ▶️ Смотреть на YouTube #java #spring #springboot #docker #gradle #maven 🌐 Сайт 🌐 Паблик в VK 🌐 Канал в Telegram 💰 Стать доном 💵 Донаты в Boosty 💸 Донаты в Tinkoff