Spring АйО
10.6K subscribers
452 photos
303 videos
583 links
Русскоязычное сообщество Spring-разработчиков.

Habr: bit.ly/433IK46
YouTube: bit.ly/4h3Ci0x
VK: bit.ly/4hF0OG8
Rutube: bit.ly/4b4UeX6
Яндекс Музыка: bit.ly/3EIizWy

Чат для общения: @spring_aio_chat
По вопросам сотрудничества: @befayer
Download Telegram
⚡️ Бесплатные ИИ-агенты для кодинга: локально и в облаке | Kilo Code, Codex, OpenCode, Qwen Code

В новом видео — как запустить локальную LLM в IDE за 15 минут и четыре бесплатных облачных альтернативы.

Локальный вариант: LM Studio + Qwen3-Coder + Kilo Code. Работает офлайн, без подписки и лимитов на запросы.

Облачные варианты: Kilo Code со своими бесплатными моделями, Qwen Code с 1 000 запросов в день, OpenCode с ротируемыми open source free моделями и OpenAI Codex — пока бесплатный для Free-аккаунтов.

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍27🔥1586
Media is too big
VIEW IN TELEGRAM
🍃 Вышла Java 26, Applet API удалили, connection pool и Netflix | Spring АйО Подкаст №55

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
🗯 СЛУШАТЬ НА ЯНДЕКС.МУЗЫКЕ
🤩 СЛУШАТЬ НА SPOTIFY
🤩 СЛУШАТЬ НА APPLE PODCASTS

💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍129😁1
👻 Spring Data. На пути к более строгой типизации

В Spring Data динамические фильтры и сортировки часто строят по строкам: Sort.by("firstName"), where("address.country").is(...). В целом это довольно удобно и поддерживается большинством модулей Spring Data.

Однако потом возникают проблемы в поддержке софта. Опечатки и переименования свойств при рефакторинге спокойно собираются и ломаются только в рантайме. Да и IDE тоже почти не помогает, потому что строка для нее просто текст.

Альтернатива в Java давно есть: метамодели (Querydsl, JPA Metamodel Generator) и подходы от схемы БД (jOOQ). Они дают проверку на этапе компиляции, но обычно требуют annotation processing/плагины, влекут пересборки и добавляют зависимости и нюансы в IDE.

Так вот, в Spring Data 2026.0.0-M1 появился третий вариант: типобезопасные ссылки на свойства без генерации. Вместо строк можно передавать ссылки на методы/свойства: Sort.by(Person::getFirstName, Person::getLastName), для вложенных путей - PropertyPath.of(Person::getAddress).then(Address::getCountry). Путь валидируется типами, а ссылки интроспектируются один раз и кэшируются. Для Kotlin всё ещё лучше.

📎 Полный текст — по ссылке: https://habr.com/ru/companies/spring_aio/articles/1014920/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35🔥318
DPoP: что это такое, как работает и почему Bearer-токенов недостаточно

Утек access token - и работает он у того, кто его нашел. Так устроены Bearer-токены: сервер верит любому, кто предъявил строку из заголовка Authorization.

Отсюда и всем знакомые истории: Codecov (2021) потерял токены из-за Supply Chain Injection в CI/CD, GitHub (2022) потерял OAuth-токены Heroku и Travis CI, в Microsoft (2023) в репозитории оказался слишком «широкий» SAS-токен, открывавший доступ к 38 ТБ данных (тыц, тыц). Во всех случаях токен оказался у посторонних и его просто использовали.

DPoP (RFC 9449) предлагает другой контракт. Токен привязывается к ключу клиента, а каждый запрос сопровождается DPoP proof-JWT, подписанным приватным ключом. Сервер сверяет подпись и отпечаток ключа (cnf.jkt) внутри access token.

Данный механизм является необязательным расширением для OAuth2 и позволяет избежать ситуации, при которой утечка Access Token-а становится фатальной для Backend-а.

📎 Полный текст — по ссылке: https://habr.com/ru/companies/spring_aio/articles/1015544/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥107👌1
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ В OpenIDE Pro появится поддержка ACP (Agent Client Protocol)

JetBrains и Zed выпустили его как стандарт общения IDE с агентами. Логика та же, что у LSP в 2016: вместо того чтобы каждый редактор реализовывал поддержку каждого языка отдельно, Microsoft стандартизировала это через один протокол.

ACP делает то же самое, но для ИИ-агентов.


Через ACP к IDE подключается агент целиком — с его инструментами и логикой. Это не просто вызов модели по API: так можно подключить Claude Code, Codex или любого другого агента. Список агентов, которые поддерживают ACP постоянно расширяется.

Базовую реализацию мы уже сделали. Если хотите попробовать раньше других — пишите нам на почту.

В рамках beta-тестирования поддержка ACP будет совместима с базовой версией OpenIDE.

😌 Незаметно присоединяйтесь ©
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍22🔥128😁2
⚡️ Евгений Борисов — Spring-потрошитель, 12 лет спустя

Если ты сидишь в этом канале и всё ещё не смотрел легендарный доклад Евгения Борисова "Spring-потрошитель", то у нас для тебя 2 новости:

1. Ты бесконечно много упустил. Та БАЗА, которую Женя выдал в этом докладе, стала фундаментом для целого поколения разработчиков.
2. Теперь наверстать упущенное можно в 10 раз веселее!

Саня, Миша и Гошан записали 2.5-часовой РЕАКТ.

Смотрим, смеёмся и ностальгируем. Приятного повторного просмотра старичкам и первого просмотра всем зумерам.

Надеемся, грядущий JPoint 2026 подарит не меньше легендарных материалов)

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥52👍22😁9🤩74🤔1🤯1
🩷 OpenTelemetry со Spring Boot

В новом переводе от команды Spring АйО смотрим, как подружить современный Spring Boot и OpenTelemetry так, чтобы данные уходили по OTLP в любой совместимый бэкенд.

В экосистеме Spring большая часть телеметрии была завязана на Micrometer Project (Был ещё spring-cloud-sleuth если кто помнит). Но полноценного all-in-one решения для того, чтобы Spring Boot приложение просто начало экспортировать телеметрию по OTLP не было. До Spring Boot 4.

На данный момент для интеграции OTel в Spring Boot приложения есть 3 пути: Java Agent (минимум кода, но чувствителен к версиям и может конфликтовать с другими агентами), сторонний OTel starter (стартер от самих OpenTelemetry, но тянет alpha-зависимости) и новый spring-boot-starter-opentelemetry, доступный в Spring Boot 4.0.

📎Читать тут: https://habr.com/ru/companies/spring_aio/articles/1017016/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥113
Media is too big
VIEW IN TELEGRAM
🍃 Spring Data молодцы, Kotlin DSL надоел, Bearer токены не панацея | Spring АйО Подкаст №56

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
🗯 СЛУШАТЬ НА ЯНДЕКС.МУЗЫКЕ
🤩 СЛУШАТЬ НА SPOTIFY
🤩 СЛУШАТЬ НА APPLE PODCASTS

💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
16🔥11👍9
⚡️⚡️⚡️ Claude Code – есть пробитие!

Эта новость не может ждать еженедельного выпуска IT-новостей от OpenIDE.

Обсуждаем уже сейчас вчерашний слив исходников Claude Code!

😉 СМОТРЕТЬ НА YOUTUBE
🥰 СМОТРЕТЬ НА RUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
Please open Telegram to view this post
VIEW IN TELEGRAM
2😁19🔥124👍21
⚡️ Spring АйО Академия

— наш центр компетенции по Spring и enterprise-разработке на русском языке.

На базе сообщества Spring АйО мы запускаем программы обучения для Middle/Senior разработчиков — от практикующих экспертов, которые сами пишут production-ready код для высоконагруженных приложений.

Первую программу ведёт Михаил Поливаха — контрибьютор в Spring Data, спикер JPoint, Joker, Devoxx, Spring I/O.

Тема — Продвинутый Hibernate: решение вызовов уровня Enterprise.

Для тех, кто умеет писать запросы, но сталкивался с тем, что ORM в реальных системах ведёт себя не так, как на слайдах.

N+1, OFFSET на больших таблицах, @BatchSize, StatelessSession, Soft Delete, Transactional Outbox, @TenantId и работа с большими объёмами данных.


⭐️ Набор на первый поток будет идти весь апрель, стартуем в мае, сразу после JPoint 2026!

📎 Ознакомиться с программой подробнее и записаться можно тут: https://spring-aio.ru/advanced_hibernate
Please open Telegram to view this post
VIEW IN TELEGRAM
6🔥4216🤔10👍93😁2
🔼 Оптимизация запросов в Spring Data JDBC

Spring Data JDBC всегда была «белой вороной» в мире Java ORM. Она проще Hibernate, но эта простота имеет свою цену.

Помимо прочих, одна из главных претензий к фреймворку — производительность. Часто проблемы решаются правильным дизайном агрегатов в духе DDD, но что делать, если редизайн — не вариант, а проект уже тормозит?

Михаил в своей статье разбирает, как выжать максимум из Spring Data JDBC, когда стандартные подходы не справляются.

📎 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/1010558/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍215🔥4🤔1
👩‍💻 Раздувание памяти JDK 17 в контейнерах: разбор инцидента

Апгрейд микросервисов с JDK 8 на JDK 17 прошел dev и QA спокойно, но в проде через 2-3 часа все начало падать. Утилизация памяти выросла в 4 раза, контейнеры стали ловить OOMKill и перезапускаться, Uptime SLA просел, массовый инцидент.

Раньше JVM использовала около 50% памяти контейнера и обслуживала ~400 потоков. После релиза стало 95-100% и 1600+ соответственно.

При этом heap выглядел нормально, около Xmx, а раздувалась нативная память: ~800 MB -> 3,4-3,6 GB. Виноваты несколько эффектов, которые в контейнерах усиливаются: JVM начала создавать намного больше потоков, OS стала выделять JVM гораздо больше, а дефолтный GC в JDK 17 добавил накладные расходы.

Всё это из-за простого бага в JDK, который при миграции утащил за собой весь production.

📎 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/1019086/
Please open Telegram to view this post
VIEW IN TELEGRAM
1🤯31🔥10👍642🤔2
🔥 Профилирование? Не, не слышал

Друзья, следующий подкаст пройдет не как обычно, а с очень уважаемыми IT индустрией людьми - Владимиром Плизга и Алексеем Рагозиным - настоящими гуру JVM performance.

У нас, конечно же, есть, что обсудить.

Например:
🔘Нужны ли профайлеры в 2к26?
🔘Зачем вообще запрофилировать?
🔘Поможет ли ИИ в анализе перформанса?

Но мы ждем и ваши вопросы в комментариях под постом. Самые интересные обсудим на подкасте!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33👍1153😁1
Почему merge в Hibernate почти всегда лишний (и чем его заменить)

Чаще всего merge в Hibernate – это лишний SELECT. И это не про сохранение, а про перенос состояния detached-объекта в текущий Persistence Context.

Эту проблему и пути её решения отдельно обсуждали на докладе в рамках Joker Фёдор и Илья.

Встречается это в типичном флоу: findById -> setX -> save.

Внутри @Transactional загруженная сущность уже managed, а UPDATE и так уйдет в момент flush. А вот save в Spring Data JPA нередко уходит в merge и может добавить лишние чтение или копирование.

Отдельная боль - CascadeType.MERGE (или ALL): merge проходит по графу связей, растут накладные расходы и потенциальные SQL.
Не отходя от кассы 🤓

Конечно же, про подобные и более сдожные темы (@BatchSize, пагинация без OFFSET, StatelessSession/Bulk API, Soft Delete, multi-tenancy, outbox и т.д.) у нас есть собственный лекториум, где Михаил все расскажет и покажет.

📎 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/1020426/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2085🤯1
Media is too big
VIEW IN TELEGRAM
🍃 Claude слили, Spring Data JDBC еще может, GitHub не работает | Spring АйО Подкаст №57

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
🗯 СЛУШАТЬ НА ЯНДЕКС.МУЗЫКЕ
🤩 СЛУШАТЬ НА SPOTIFY
🤩 СЛУШАТЬ НА APPLE PODCASTS

💬 Аудио версию подкаста можно найти в комментариях
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1765👍2
🤩 Москва, джависты, газ знакомиться!

22 апреля мы проводим совместный митап с VK. Java и Spring без разогревающих докладов и воды.

Встречаемся офлайн в Москве и онлайн.

Что в программе:

🔘Observability-as-Code в Spring Boot: контракты и тесты для метрик, логов и рейсов. Наш эксперт Евгений Сулейманов

🔘Классы типов — возможное будущее Java: как Брайан Гётц предлагает развивать язык. Андрей Васильев, ведущий разработчик RuStore, VK

🔘Основная проблема взаимодействия с базами данных. Наши Илья и Фёдор Сазонов

После докладов тоже будет интересно — мастер-класс, общение, фуршет и нормальный нетворкинг.


Когда: 22 апреля
🎯 Где: Москва, Скайлайт + онлайн
🎯 Сбор гостей: 18:30

📎 Участие бесплатное, главное – зарегистрироваться: https://vk.cc/cWheDY
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍23🔥1611🤔3🤯21
😭 Самый простой способ устроить утечку памяти в Java

Не секрет, что GC освобождает только недостижимые объекты. Утечка в Java начинается там, где объект уже не нужен, но на него все еще есть цепочка ссылок от живого потока.

Симптомы обычно одинаковые: куча растет, GC срабатывает чаще, паузы увеличиваются, финал - java.lang.OutOfMemoryError: Java heap space.

Самые частые ловушки и фиксы:
🔳static List/Map: добавили и не удалили - объекты остаются в памяти до выгрузки класса. Нужны remove/очистка, лимиты, иногда WeakHashMap.
🔳non-static inner/anonymous class: неявно держит ссылку на внешний объект, особенно если внутри бесконечный Thread.
🔳listener/callback: подписались и не отписались - источник событий удерживает объект (UI, event bus).
🔳ThreadLocal в пуле потоков: set() без remove().
🔳кэш на HashMap без maxSize/TTL: используйте политики вытеснения (Guava Cache, Caffeine)

В целом вывод такой, что нужно смотреть график heap в Grafana, снимать heap dump (jmap), в Eclipse MAT запускать Leak Suspects и проверять цепочки удерживающих ссылок.

📎 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/1022018/
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍338🔥61
⚡️ Большая распаковка Java 26. Что этот релиз значит для нас всех?

В новом видео разбираемся:
🟡какие изменения стали финальными и доступны прямо сейчас
🟡какие требуют явного включения флагов
🟡и за какими пока стоит просто следить

Плюс рассмотрим один секретный JEP :D

😉 СМОТРЕТЬ НА YOUTUBE
😄 СМОТРЕТЬ В VK ВИДЕО
🥰 СМОТРЕТЬ НА RUTUBE
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥17👍73😁1
💡 JPA 4. Переосмысление Hibernate

Вышел первый milestone Jakarta Persistence 4.0 (JPA 4). Это крупнейшая переработка со времен JPA 2.0 (декабрь 2009).

Михаил Поливаха:

Статья является переводом анонса Гевина Кингa о релизе первого milestone JPA 4 спецификации и общего вектора развития JPA.

Полноценная 4-ая версия JPA спецификации должна выйти в этом году. Тем не менее, то, что сейчас в Milestone – это основа, которая, возможно, с небольшими доработками, но уже пойдёт в релиз в этом году.

От себя скажу, что данное обновление будет довольно крупное. Я оставил свои комментарии там, где посчитал уместным.

P.S: У нас в рамках Spring АйО Академии как раз есть программа, посвящённая Hibernate. Набор мы на неё ведём до конца апреля.

В ней мы тоже затронем новую версию спецификации, в частности и работу со StatelessSession и EntityAgent на практике. Я думаю, что из всего апдейта, именно стандартизация работы без Persistence Context будет самым важным для прикладных разработчиков.

Приятного чтения!


📎 Читать на Хабре: https://habr.com/ru/companies/spring_aio/articles/1022564/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥652
🍃 Spring Data JDBC: Где мы находимся сейчас 😀

Друзья, встречаем первый из 5 докладов трека Spring АйО на самой важной конференции весны – JPoint 2026!

Молодое поколение врывается на сцену – Артемий Дегтярев расскажет, как поживает Spring Data JDBC в наше время.

Рассмотрим все последние фичи, от AOT-репозиториев и композитных ключей, до Single Query Loading, поговорим о мечтах про Scrolling API и о проблемах в реализации всех этих фич.


⛔️Все доклады трека Spring АйО будут транслироваться в онлайне и будут доступны абсолютно бесплатно! Главное – зарегистрироваться.

Для тех, кто придет лично – наш зал будет под номером 2️⃣!

🗓 29 апреля
📍 Онлайн. Бесплатно
🏠 Оффлайн. Гостиница «Рэдиссон Славянская»: пл. Европы, 2

🔗 ЗАРЕГИСТРИРОВАТЬСЯ

@spring_aio 🩷 @jpoint_joker_channel
Please open Telegram to view this post
VIEW IN TELEGRAM
👍178🔥5