Spring АйО
Русскоязычное сообщество Spring-разработчиков. Habr: bit.ly/433IK46 YouTube: bit.ly/4h3Ci0x VK: bit.ly/4hF0OG8 Rutube: bit.ly/4b4UeX6 Яндекс Музыка: bit.ly/3EIizWy Чат для общения: @spring_aio_chat По вопросам сотрудничества: @befayer
Больше📈 Аналитический обзор Telegram-канала Spring АйО
Канал Spring АйО (@spring_aio) является активным участником. Сейчас сообщество объединяет 10 936 подписчиков, занимая 11 257 место в категории Технологии и приложения и 59 420 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 10 936 подписчиков.
Согласно последним данным от 07 июля, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 33, а за последние 24 часа — 1, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 50.04%. В первые 24 часа после публикации контент обычно набирает 24.02% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 5 471 просмотров. В течение первых суток публикация набирает 2 626 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 57.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как айо, хабр, api, jep, amplicode.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Русскоязычное сообщество Spring-разработчиков.
Habr: bit.ly/433IK46
YouTube: bit.ly/4h3Ci0x
VK: bit.ly/4hF0OG8
Rutube: bit.ly/4b4UeX6
Яндекс Музыка: bit.ly/3EIizWy
Чат для общения: @spring_aio_chat
По вопросам сотрудничества: @befayer”
Благодаря высокой частоте обновлений (последние данные получены 08 июля, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
Order вместе с OrderItem не мог безопасно ограничиться на уровне SQL. Из-за join один заказ мог превратиться в несколько строк, и limit мог обрезать коллекцию. Поэтому Hibernate загружал все подходящие строки, а страницу выбирал уже в памяти. На больших данных это, конечно же, било по памяти и могло закончиться OutOfMemoryException. Да и в целом не очень перформансно это, согласитесь.
Дождались, и теперь Hibernate сначала выбирает нужные id родительских сущностей во вложенном запросе, а затем загружает для них полные дочерние коллекции. Пагинация остается в БД, данные не режутся.
Еще в 7.4 появились history и audit tables. @Temporal хранит версии строк и позволяет читать сущность на конкретный момент времени. @Audited пишет изменения ADD/MOD/DEL в audit-таблицу без Envers.
📎 Полный текст: https://habr.com/ru/companies/spring_aio/articles/1047844/— Упростили работу с tools Теперь Spring AI лучше работает со сценариями, где модель должна вызывать внешние функции и инструменты. Плюс появился механизм, который помогает не отправлять модели сразу все доступные инструменты, а подбирать только нужные. Это полезно, когда инструментов много и не хочется засорять контекст. — Сильнее прокачали MCP Spring AI обновился до MCP SDK 2.0 и в целом стал лучше встроен в историю с MCP. Для тех, кто смотрит в сторону AI-приложений с внешними инструментами и сервисами, это важный шаг. — Обновили интеграцию с OpenAI Под капотом Spring AI теперь использует официальный Java SDK от OpenAI. Для разработчиков это обычно хороший знак: меньше самодельных решений, больше стабильности и предсказуемости. — Привели в порядок память чата Проще говоря, Spring AI стал аккуратнее хранить историю сообщений. Это значит, что в реальных приложениях меньше шансов получить путаницу в сообщениях, неправильный порядок ответов и странное поведение модели. — Сделали настройки более понятными Меньше неявной магии, больше прозрачности. Некоторые настройки теперь работают предсказуемее, и поведение модели проще контролировать явно.В общем стало больше предсказуемости, лучше интеграция со Spring-стеком, меньше неявного поведения в чувствительных местах вроде tool calling, memory и MCP. Помним, что это major release. Переход с 1.1.x потребует внимательного апгрейда: breaking changes есть в tool calling, memory, MCP и конфигурации. 📎 Документация по 2.0.0 📎 Документация по переезду с 1.1.х на 2.0.0 ❓ Кто-то использует Spring AI в реальных сервисах? Или еще подождем?
getXXX(), который вроде бы просто геттер, отдающий данные наружу.
Но проблема в том, что в этот момент наружу может утекать изменяемое внутреннее состояние объекта. А значит, ломается инкапсуляция, начинают нарушаться инварианты, а баги в таких местах потом дебажатся мучительно долго. Для библиотек и платформенного кода это ещё опаснее: однажды такой API становится публичным контрактом, и цена ошибки вырастает в разы.
И самое неприятное, что на этом история не заканчивается: подобные решения иногда расширяют attack surface системы и в плохом сценарии становятся частью куда более серьёзных инцидентов. В новой статье разбираю именно такой случай на простом Java-примере и показываю, почему эта ошибка в дизайне API может стоить очень дорого. Если вам близки темы Java, Spring и аккуратного API-дизайна, почитайте, статья небольшая 😉
📎 Читать на Хабр:
https://habr.com/ru/companies/spring_aio/articles/1046620/Как вы знаете, первичное наполнение контекста — крайне важная задача. При этом все популярные агенты (Claude Code, Codex, OpenCode и т. д.) выполняют ее без какого-либо понимания, как устроены приложения, написанные на Spring. Как результат: не находятся бины, дублируются компоненты, снижается скорость работы и растет расход токенов. Эти проблемы как раз и призван решить данный скилл.📚 Погружаемся в Spring Explore на Хабре: https://habr.com/ru/companies/haulmont/articles/1041314/
null, потом double-checked locking, volatile, синхронизация. Ошибиться легко, а final не поставить. Итог - код хрупче и JVM хуже делает constant folding.
В JDK 26 (preview, JEP 526) добавили LazyConstant<T>: final поле, рецепт вычисления через Supplier, значение доступно через get(). Supplier выполнится при первом get и только один раз успешно, даже при гонке потоков. Кроме этого значение помечается как @Stable - JVM может считать его константой и агрессивнее оптимизировать.
Граничные случаи: null нельзя; не сериализуется; исключение из Supplier пробросится и следующая попытка снова пересчитает; equals у LazyConstant - только identity.
Для 1:n есть List.ofLazy и Map.ofLazy: элементы/значения считаются по индексу/ключу по требованию и кэшируются.
📎Полный текст — https://habr.com/ru/companies/spring_aio/articles/1042294/String.format() в горячем коде
- Автобоксинг
и так далее. И каждый подобный пролёт делает приложение чуть медленнее, и в какой-то момент это рискует превратиться в критическую массу, которая больно выстрелит на следущем спайке нагрузки.
Если вы пишете на Java и у вас всё вроде работает, но под нагрузкой сервисы начинают задыхаться, эта статья покажет конкретные паттерны, на которые стоит посмотреть.
📎 Полный текст: https://habr.com/ru/companies/spring_aio/articles/1039778/@Transactional влияет на latency, HikariCP, JDBC-соединения, блокировки в PostgreSQL, Hibernate flush, rollback-правила и p95/p99 в проде.
— Дмитрий Соломенников
«Не Котлином единым, или почему одного языка недостаточно»
Разговор о том, почему экосистема не заканчивается на Kotlin, какие еще языки и проекты развиваются рядом, зачем это все вообще нужно и возможен ли когда-нибудь действительно универсальный язык программирования.
👉 Для участия нужна только регистрация.public контракты являются public только для авторов библиотеки, а не для пользователей.
Ребята из Netflix ввели простые метки для API: @Public - можно использовать снаружи, @Experimental - тоже можно, но интерфейс может меняться, @Deprecated - готовится к удалению. Все остальное считается внутренним и использованию извне не подлежит. Но сами аннотации проблему не решают, нужна проверка на масштабе.
Решение - ArchUnit + Nebula ArchRules.
ArchUnit анализирует скомпилированный байткод, поэтому одинаково работает для Java/Kotlin/Scala и проверяет реальный код на classpath. Команды пишут правила (например: «вне пакета библиотеки нельзя зависеть от ее deprecated/internal API»), публикуют их как отдельный arch-rules JAR, а runner автоматически запускает проверки в репозиториях и делает отчеты с точной строкой нарушения.
📎 Полный текст: https://habr.com/ru/companies/spring_aio/articles/1037012/