Spring Security для начинающих: конспект от аутентификации до JWT
На Хабре уже много статей про Spring Security — от кратких заметок до глубоких разборов. В этой статье я решил собрать всё в формате конспект-мануала, который можно читать как пошаговое введение: от базовой аутентификации и фильтров до JWT и OAuth2. Это материал, собранный по официальной документации и дополненный разъяснениями «на простом языке». Я не работал в больших enterprise-командах, поэтому буду рад комментариям и советам от более опытных коллег. Местами я использовал помощь ChatGPT: он помог структурировать материал и сделать стиль более читабельным, ближе к документации.
Читать: https://habr.com/ru/articles/946912/?utm_campaign=946912
@a_cup_of_java | Другие наши каналы
На Хабре уже много статей про Spring Security — от кратких заметок до глубоких разборов. В этой статье я решил собрать всё в формате конспект-мануала, который можно читать как пошаговое введение: от базовой аутентификации и фильтров до JWT и OAuth2. Это материал, собранный по официальной документации и дополненный разъяснениями «на простом языке». Я не работал в больших enterprise-командах, поэтому буду рад комментариям и советам от более опытных коллег. Местами я использовал помощь ChatGPT: он помог структурировать материал и сделать стиль более читабельным, ближе к документации.
Читать: https://habr.com/ru/articles/946912/?utm_campaign=946912
@a_cup_of_java | Другие наши каналы
Как получить и использовать бесплатную лицензию PVS-Studio на практике. Часть 1: подготовка и начало работы
Многие разработчики слышали о статическом анализаторе PVS-Studio, но не все знают, что анализатор можно использовать бесплатно на постоянной основе. В этой статье мы разберём, какие существуют варианты бесплатного лицензирования, для кого они подходят и как начать пользоваться инструментом.
Читать: https://habr.com/ru/companies/pvs-studio/articles/947098/?utm_campaign=947098
@a_cup_of_java | Другие наши каналы
Многие разработчики слышали о статическом анализаторе PVS-Studio, но не все знают, что анализатор можно использовать бесплатно на постоянной основе. В этой статье мы разберём, какие существуют варианты бесплатного лицензирования, для кого они подходят и как начать пользоваться инструментом.
Читать: https://habr.com/ru/companies/pvs-studio/articles/947098/?utm_campaign=947098
@a_cup_of_java | Другие наши каналы
Возвращение LTS: ты не пройдёшь… мимо новых фич Java 25
В одной из моих предыдущих статей я писал о фичах между LTS-версиями Java 17 и 21. Сегодня, два года спустя (Как?! Уже два года?!), выходит новый LTS-релиз — Java 25.
Подавляющее большинство проектов пропускают промежуточные релизы и используют только LTS-версии Java. Так что давайте посмотрим, какие возможности новая LTS-версия (Java 25) приносит по сравнению с предыдущей LTS-версией (Java 21).
Читать: https://habr.com/ru/companies/T1Holding/articles/946778/?utm_campaign=946778
@a_cup_of_java | Другие наши каналы
В одной из моих предыдущих статей я писал о фичах между LTS-версиями Java 17 и 21. Сегодня, два года спустя (Как?! Уже два года?!), выходит новый LTS-релиз — Java 25.
Подавляющее большинство проектов пропускают промежуточные релизы и используют только LTS-версии Java. Так что давайте посмотрим, какие возможности новая LTS-версия (Java 25) приносит по сравнению с предыдущей LTS-версией (Java 21).
Читать: https://habr.com/ru/companies/T1Holding/articles/946778/?utm_campaign=946778
@a_cup_of_java | Другие наши каналы
OWASP Top Ten 2021 через простые примеры на Java. И немного про SAST
В этой статье мы расскажем про категории OWASP Top Ten 2021 через призму срабатываний Java анализатора PVS-Studio. Так что, если у вас есть желание посмотреть на возможные паттерны уязвимостей в Java коде или узнать, что из себя представляют категории OWASP Top Ten, приятного чтения!
Читать: https://habr.com/ru/companies/pvs-studio/articles/947332/?utm_campaign=947332
@a_cup_of_java | Другие наши каналы
В этой статье мы расскажем про категории OWASP Top Ten 2021 через призму срабатываний Java анализатора PVS-Studio. Так что, если у вас есть желание посмотреть на возможные паттерны уязвимостей в Java коде или узнать, что из себя представляют категории OWASP Top Ten, приятного чтения!
Читать: https://habr.com/ru/companies/pvs-studio/articles/947332/?utm_campaign=947332
@a_cup_of_java | Другие наши каналы
Трейсинг в hh.ru: как мы выросли от 1 тысячи до 1 миллиона событий в секунду без семплирования
В каждой компании есть необходимость выстроить систему observability. В hh.ru мы перестраивали архитектуру под большее количество данных несколько раз — сейчас имеем на входе 24к RPS, 1 миллион спанов в секунду, 5к инстансов сервисов. Если вы — инженер, который находится в процессе построения или перестройки собственной системы трейсинга, этот доклад — для вас.
Привет, Хабр! Я — Александр Казанцев, уже более десяти лет в разработке. Когда-то был инженером на пивзаводе и могу рассказать, из чего делают пенное; но сегодня — о другом.
Читать: https://habr.com/ru/companies/hh/articles/939754/?utm_campaign=939754
@a_cup_of_java | Другие наши каналы
В каждой компании есть необходимость выстроить систему observability. В hh.ru мы перестраивали архитектуру под большее количество данных несколько раз — сейчас имеем на входе 24к RPS, 1 миллион спанов в секунду, 5к инстансов сервисов. Если вы — инженер, который находится в процессе построения или перестройки собственной системы трейсинга, этот доклад — для вас.
Привет, Хабр! Я — Александр Казанцев, уже более десяти лет в разработке. Когда-то был инженером на пивзаводе и могу рассказать, из чего делают пенное; но сегодня — о другом.
Читать: https://habr.com/ru/companies/hh/articles/939754/?utm_campaign=939754
@a_cup_of_java | Другие наши каналы
Java 25 выходит уже сегодня
Четверть века назад язык, придуманный для «умных тостеров», стал символом корпоративного софта и огромных систем. Сегодня Java продолжает эволюционировать, и каждая новая версия всё сильнее ломает стереотип о «тяжёлом корпоративном динозавре».
Встречайте 25 версию Java вместе с командой Spring АйО!
Читать: https://habr.com/ru/companies/spring_aio/articles/947420/?utm_campaign=947420
@a_cup_of_java | Другие наши каналы
Четверть века назад язык, придуманный для «умных тостеров», стал символом корпоративного софта и огромных систем. Сегодня Java продолжает эволюционировать, и каждая новая версия всё сильнее ломает стереотип о «тяжёлом корпоративном динозавре».
Встречайте 25 версию Java вместе с командой Spring АйО!
Читать: https://habr.com/ru/companies/spring_aio/articles/947420/?utm_campaign=947420
@a_cup_of_java | Другие наши каналы
Java 25 — новый LTS-релиз с акцентом на производительность и стабильность. Включает 18 JEP, из которых 7 финализированы, а 9 сосредоточены на улучшении работы JVM и ускорении запуска приложений. Поддержка HTTP/3 и улучшения в JDK 26 уже на горизонте.
Подробности: https://www.infoq.com/news/2025/09/java25-released/
#en
@a_cup_of_java | Другие наши каналы
Подробности: https://www.infoq.com/news/2025/09/java25-released/
#en
@a_cup_of_java | Другие наши каналы
Не LLM едиными: генерируем юнит-тесты из реального исполнения на лету
Представьте себе: вы отлаживаете новый баг в сложном многослойном приложении (например, на Spring). Чтобы воспроизвести проблему, приходится взаимодействовать со всей системой end-to-end: отправлять запрос на эндпоинт или что-то кликать в UI. Юнит-теста, который бы изолировал нежелательное поведение до уровня злополучного сервиса или утилиты, нет. А хотелось бы, чтобы он был: во-первых, воспроизводить баг было бы проще (особенно если UI кликает QA, а не вы), а во-вторых, его потом можно было бы легко превратить в регрессионный и улучшить стабильность системы.
Тем временем все данные, нужные для воспроизведения бага в изоляции, есть. В окне отладчика видно, что приходит в метод, и в каком состоянии находится сервис перед тем, как все пойдёт не так. Мы в Explyt RnD решили, что нечего добру пропадать, и научились перехватывать это состояние, а потом генерировать юнит-тест, который в точности его воспроизводит.
Сегодня расскажу о пройденном исследовательском пути, о том, как попробовать нашу экспериментальную фичу в плагине для IntelliJ IDEA, и о том, что у неё под капотом (спойлер: не только LLM).
Читать: https://habr.com/ru/companies/explyt/articles/947856/?utm_campaign=947856
@a_cup_of_java | Другие наши каналы
Представьте себе: вы отлаживаете новый баг в сложном многослойном приложении (например, на Spring). Чтобы воспроизвести проблему, приходится взаимодействовать со всей системой end-to-end: отправлять запрос на эндпоинт или что-то кликать в UI. Юнит-теста, который бы изолировал нежелательное поведение до уровня злополучного сервиса или утилиты, нет. А хотелось бы, чтобы он был: во-первых, воспроизводить баг было бы проще (особенно если UI кликает QA, а не вы), а во-вторых, его потом можно было бы легко превратить в регрессионный и улучшить стабильность системы.
Тем временем все данные, нужные для воспроизведения бага в изоляции, есть. В окне отладчика видно, что приходит в метод, и в каком состоянии находится сервис перед тем, как все пойдёт не так. Мы в Explyt RnD решили, что нечего добру пропадать, и научились перехватывать это состояние, а потом генерировать юнит-тест, который в точности его воспроизводит.
Сегодня расскажу о пройденном исследовательском пути, о том, как попробовать нашу экспериментальную фичу в плагине для IntelliJ IDEA, и о том, что у неё под капотом (спойлер: не только LLM).
Читать: https://habr.com/ru/companies/explyt/articles/947856/?utm_campaign=947856
@a_cup_of_java | Другие наши каналы
❤3
WebAssembly 3.0 добрался до браузеров: 64-битная память, сборщик мусора и настоящие исключения
WebAssembly 3.0 уже работает в браузерах: 64-битная память, полноценный GC, система исключений и новые инструменты для языков
Читать: «WebAssembly 3.0 добрался до браузеров: 64-битная память, сборщик мусора и настоящие исключения»
@a_cup_of_java | Другие наши каналы
WebAssembly 3.0 уже работает в браузерах: 64-битная память, полноценный GC, система исключений и новые инструменты для языков
Читать: «WebAssembly 3.0 добрался до браузеров: 64-битная память, сборщик мусора и настоящие исключения»
@a_cup_of_java | Другие наши каналы
Андроид всё еще не готов к RAW-видео
Уверен, что многих возмутит уже само название этой статьи. А некоторые сразу же побегут в комментарии указывать на приложение, которое “смогло”. Но не стоит спешить, друзья!
Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.
Читать: https://habr.com/ru/articles/947578/?utm_campaign=947578
@a_cup_of_java | Другие наши каналы
Уверен, что многих возмутит уже само название этой статьи. А некоторые сразу же побегут в комментарии указывать на приложение, которое “смогло”. Но не стоит спешить, друзья!
Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.
Читать: https://habr.com/ru/articles/947578/?utm_campaign=947578
@a_cup_of_java | Другие наши каналы
Чем хорош Postgres 18?
PostgreSQL 18 вот-вот выйдет, и это не просто минорное обновление, а настоящий прорыв для разработчиков и администраторов БД. В новом переводе от команды Spring АйО рассмотрим ключевые новинки — асинхронный I/O для ускорения чтения, поддержка UUID версии 7 с улучшенной сортировкой, skip scans в B-tree индексах, виртуальные вычисляемые столбцы и даже OAUTH 2.0 для аутентификации. Всё это делает Postgres ещё более быстрым, гибким и современным.
Читать: https://habr.com/ru/companies/spring_aio/articles/948068/?utm_campaign=948068
@a_cup_of_java | Другие наши каналы
PostgreSQL 18 вот-вот выйдет, и это не просто минорное обновление, а настоящий прорыв для разработчиков и администраторов БД. В новом переводе от команды Spring АйО рассмотрим ключевые новинки — асинхронный I/O для ускорения чтения, поддержка UUID версии 7 с улучшенной сортировкой, skip scans в B-tree индексах, виртуальные вычисляемые столбцы и даже OAUTH 2.0 для аутентификации. Всё это делает Postgres ещё более быстрым, гибким и современным.
Читать: https://habr.com/ru/companies/spring_aio/articles/948068/?utm_campaign=948068
@a_cup_of_java | Другие наши каналы
👍1
Нейросети в Spring-разработке: убираем рутину, а не интеллект
Всем привет, на связи команда Explyt. Как известно наша компания предоставляет целую экосистему плагинов для IDEA: это и плагин для поддержки Spring, а также Explyt плагин для написания кода, генерации тестов и интеграции с AI. И нам пришла в голову идея - а почему бы не расширить функциональность Spring плагина с помощью AI ассистента, который есть в Explyt. И если вы используете оба наши плагина, то у вас появятся дополнительные возможности для Spring, позволяющие достаточно хорошо решать типовые задачи, которые возникают в процессе работы, с помощью AI, о которых мы подробно расскажем далее.
Читать: https://habr.com/ru/companies/explyt/articles/944266/?utm_campaign=944266
@a_cup_of_java | Другие наши каналы
Всем привет, на связи команда Explyt. Как известно наша компания предоставляет целую экосистему плагинов для IDEA: это и плагин для поддержки Spring, а также Explyt плагин для написания кода, генерации тестов и интеграции с AI. И нам пришла в голову идея - а почему бы не расширить функциональность Spring плагина с помощью AI ассистента, который есть в Explyt. И если вы используете оба наши плагина, то у вас появятся дополнительные возможности для Spring, позволяющие достаточно хорошо решать типовые задачи, которые возникают в процессе работы, с помощью AI, о которых мы подробно расскажем далее.
Читать: https://habr.com/ru/companies/explyt/articles/944266/?utm_campaign=944266
@a_cup_of_java | Другие наши каналы
❤2
Обмен событиями распределённого приложения на Java
Сегодня я хочу рассказать вам об одном из вариантов доставки событий для распределённого приложения на Java.
Это доставка событий через БД, в которой хранится состояние распределённого приложения.
Читать: https://habr.com/ru/companies/bercut/articles/937178/?utm_campaign=937178
@a_cup_of_java | Другие наши каналы
Сегодня я хочу рассказать вам об одном из вариантов доставки событий для распределённого приложения на Java.
Это доставка событий через БД, в которой хранится состояние распределённого приложения.
Читать: https://habr.com/ru/companies/bercut/articles/937178/?utm_campaign=937178
@a_cup_of_java | Другие наши каналы
Кондотьер Кода
Есть такой термин — лейтенант военного времени. Если коротко, то «теории мало, а практики много». Вот и я, к примеру, из таких недоучек практиков. Программирование для меня было вторичным умением, а не основным, скорее хобби и дополнение к основному занятию. Я не собирался быть программистом но в итоге стал им.
Читать: https://habr.com/ru/articles/948580/?utm_campaign=948580
@a_cup_of_java | Другие наши каналы
Есть такой термин — лейтенант военного времени. Если коротко, то «теории мало, а практики много». Вот и я, к примеру, из таких недоучек практиков. Программирование для меня было вторичным умением, а не основным, скорее хобби и дополнение к основному занятию. Я не собирался быть программистом но в итоге стал им.
Читать: https://habr.com/ru/articles/948580/?utm_campaign=948580
@a_cup_of_java | Другие наши каналы
Что нового в Gradle 9.0.0?
В новом переводе от команды Spring АйО рассматривается новое крупное обновление Gradle, которое приносит с собой переход на Kotlin 2 и Groovy 4, а также делает кеш конфигурации рекомендуемым режимом сборки. В версии 9 улучшена система отчётности об ошибках, ускорена компиляция Kotlin DSL, добавлена интеграция с Jspecify, снижено потребление памяти и оптимизирована работа с IDE.
Читать: https://habr.com/ru/companies/spring_aio/articles/948710/?utm_campaign=948710
@a_cup_of_java | Другие наши каналы
В новом переводе от команды Spring АйО рассматривается новое крупное обновление Gradle, которое приносит с собой переход на Kotlin 2 и Groovy 4, а также делает кеш конфигурации рекомендуемым режимом сборки. В версии 9 улучшена система отчётности об ошибках, ускорена компиляция Kotlin DSL, добавлена интеграция с Jspecify, снижено потребление памяти и оптимизирована работа с IDE.
Читать: https://habr.com/ru/companies/spring_aio/articles/948710/?utm_campaign=948710
@a_cup_of_java | Другие наши каналы
Тим Маккиннон, Стив Фриман, Филип Крейг «Эндотестирование: юнит-тестирование с мок-объектами»
Именно с публикации этой статьи в 2000 году берет свое начало формирование лондонской школы тестирования, также известной как «мокистская» школа. В ней авторы не только вводят ключевые концепции мок-объектов и эндотестирования, но и закладывают методологический фундамент подхода, принципиально изменившего практику юнит-тестирования — подхода, основанного на явном определении взаимодействий между объектами, замене зависимостей и тестировании поведения системы изнутри.
Читать: https://habr.com/ru/articles/948982/?utm_campaign=948982
@a_cup_of_java | Другие наши каналы
Именно с публикации этой статьи в 2000 году берет свое начало формирование лондонской школы тестирования, также известной как «мокистская» школа. В ней авторы не только вводят ключевые концепции мок-объектов и эндотестирования, но и закладывают методологический фундамент подхода, принципиально изменившего практику юнит-тестирования — подхода, основанного на явном определении взаимодействий между объектами, замене зависимостей и тестировании поведения системы изнутри.
Читать: https://habr.com/ru/articles/948982/?utm_campaign=948982
@a_cup_of_java | Другие наши каналы
Как мы помогли Альфа-Банку перевести CRM в отделениях на российские Java-контейнеры
Перевести CRM-систему с тысячами пользователей на полностью российский стек — звучит как вызов? Мы тоже так подумали. Но теперь можем точно сказать: это возможно, и более того — это работает.
Команда Альфа-Банка с нашей поддержкой перенесла CRM-платформу, которую используют сотрудники в отделениях по всей стране, на Axiom JDK и контейнеризовала её с помощью Axiom Runtime Container.
Высоконагруженная система ежедневно обслуживает более 20 000 сотрудников банка, работает в сотнях отделений — и всё это без внешних зависимостей и с полной технологической автономией.
Читать: https://habr.com/ru/companies/axiomjdk/articles/948754/?utm_campaign=948754
@a_cup_of_java | Другие наши каналы
Перевести CRM-систему с тысячами пользователей на полностью российский стек — звучит как вызов? Мы тоже так подумали. Но теперь можем точно сказать: это возможно, и более того — это работает.
Команда Альфа-Банка с нашей поддержкой перенесла CRM-платформу, которую используют сотрудники в отделениях по всей стране, на Axiom JDK и контейнеризовала её с помощью Axiom Runtime Container.
Высоконагруженная система ежедневно обслуживает более 20 000 сотрудников банка, работает в сотнях отделений — и всё это без внешних зависимостей и с полной технологической автономией.
Читать: https://habr.com/ru/companies/axiomjdk/articles/948754/?utm_campaign=948754
@a_cup_of_java | Другие наши каналы
👍4
Почему памятники надо ставить тем, кто автоматизирует MS Word
DocxKtm — это Kotlin DSL-обёртка над docx4j для автоматизации Word-документов.
Умеет: создавать документы «с нуля», вставлять текст, картинки, таблицы, колонтитулы, нумерацию страниц.
Поддерживает шаблоны с подстановками и логикой (через встроенный движок на базе MVEL2). По функциональности близко к Python-библиотеке docxtpl, но на JVM и с выразительностью Kotlin.
Если вам надоело вручную генерировать документы в Word — это может сэкономить кучу времени и нервов.
Внутри статьи - моя история создания этой библиотеки.
Читать: https://habr.com/ru/articles/949036/?utm_campaign=949036
@a_cup_of_java | Другие наши каналы
DocxKtm — это Kotlin DSL-обёртка над docx4j для автоматизации Word-документов.
Умеет: создавать документы «с нуля», вставлять текст, картинки, таблицы, колонтитулы, нумерацию страниц.
Поддерживает шаблоны с подстановками и логикой (через встроенный движок на базе MVEL2). По функциональности близко к Python-библиотеке docxtpl, но на JVM и с выразительностью Kotlin.
Если вам надоело вручную генерировать документы в Word — это может сэкономить кучу времени и нервов.
Внутри статьи - моя история создания этой библиотеки.
Читать: https://habr.com/ru/articles/949036/?utm_campaign=949036
@a_cup_of_java | Другие наши каналы
👍2
Как мы внедряли Dynatrace в банке для мониторинга Kafka, БД и Java/C++ сервисов
Я работаю в одном крупном российском банке, где занимаюсь разработкой распределённых систем. За последние несколько лет наша архитектура заметно усложнилась — часть сервисов работает в OpenShift, часть на виртуалках, а кое-что до сих пор крутится на «железе».
Основная боль заключалась в том, что у нас не было единой системы мониторинга. Метрики мы собирали из разных источников: где-то стоял Prometheus, где-то — Zabbix, в Kafka писали свои дашборды, а для C++ приложений вообще не было нормального мониторинга. Каждый инцидент превращался в расследование: мы переключались между тремя-четырьмя консолями, сверяли логи, писали временные скрипты для выгрузки метрик. В среднем на поиск корневой причины (root cause analysis) у нас уходило от нескольких часов до пары дней.
Читать: https://habr.com/ru/articles/949106/?utm_campaign=949106
@a_cup_of_java | Другие наши каналы
Я работаю в одном крупном российском банке, где занимаюсь разработкой распределённых систем. За последние несколько лет наша архитектура заметно усложнилась — часть сервисов работает в OpenShift, часть на виртуалках, а кое-что до сих пор крутится на «железе».
Основная боль заключалась в том, что у нас не было единой системы мониторинга. Метрики мы собирали из разных источников: где-то стоял Prometheus, где-то — Zabbix, в Kafka писали свои дашборды, а для C++ приложений вообще не было нормального мониторинга. Каждый инцидент превращался в расследование: мы переключались между тремя-четырьмя консолями, сверяли логи, писали временные скрипты для выгрузки метрик. В среднем на поиск корневой причины (root cause analysis) у нас уходило от нескольких часов до пары дней.
Читать: https://habr.com/ru/articles/949106/?utm_campaign=949106
@a_cup_of_java | Другие наши каналы
Весенние обновления Spring: релизы и безопасность
Вышли третьи milestone-версии Spring Boot, Security, GraphQL, Integration и других модулей с новыми функциями и улучшениями. Также закрыты важные уязвимости в Spring Framework и Security. Подробнее об изменениях ищите в официальных заметках.
Подробности: https://www.infoq.com/news/2025/09/spring-news-roundup-sep15-2025/
#en
@a_cup_of_java | Другие наши каналы
Вышли третьи milestone-версии Spring Boot, Security, GraphQL, Integration и других модулей с новыми функциями и улучшениями. Также закрыты важные уязвимости в Spring Framework и Security. Подробнее об изменениях ищите в официальных заметках.
Подробности: https://www.infoq.com/news/2025/09/spring-news-roundup-sep15-2025/
#en
@a_cup_of_java | Другие наши каналы
Оптимизация производительности запросов в OLAP‑СУБД: цели, методы и практика
Ниже — выверенная и локализованная на русский язык версия текста об оптимизации производительности СУБД. Термины без устойчивых русских эквивалентов сохранены на английском с первым пояснением.
Читать: https://habr.com/ru/articles/949338/?utm_campaign=949338
@a_cup_of_java | Другие наши каналы
Ниже — выверенная и локализованная на русский язык версия текста об оптимизации производительности СУБД. Термины без устойчивых русских эквивалентов сохранены на английском с первым пояснением.
Читать: https://habr.com/ru/articles/949338/?utm_campaign=949338
@a_cup_of_java | Другие наши каналы
🆒2