Как перенести Spring Boot 3.5 на 4.1 и не пропустить тихие поломки Поддержка Spring Boot 3.5 закончилась 30 июня 2026 года на версии 3.5.16. При этом проект может собраться и запуститься с устаревшими стартерами: зелёной сборки для миграции недостаточно. До перехода включите предупреждения об устаревших API и прогоните тесты. Затем проверьте зависимости: spring-boot-starter-web стал spring-boot-starter-webmvc , а…
Чашечка Java
Лучшие материалы по Java на русском и английском Правила общения: https://tprg.ru/rules Другие каналы: @tproger_channels
Вашу рекламу в этом канале увидит до 640 человек
Заказать рекламу →Динамика подписчиков
с 20 июля 2026 по 28 сентября 2026 · минимум 8 380 · максимум 8 540
Кто рекламировался за полгода
Рекламодатель определён по маркировке рекламы в постах канала.
Публикации
Почему ref = null обычно не помогает сборщику мусора JVM Локальная ссылка в стеке потока остаётся корнем GC, пока её фрейм активен. После выхода из метода сборщик её не обходит, поэтому ref = null перед возвратом обычно ничего не меняет. Сборщик копирует достижимые объекты в другой пул, а прежний затем использует заново. Он сохраняет всё, до чего может добраться от корней, а не удаляет мусор по одному объекту.…
Value-классы в JDK 28: где JVM убирает аллокации, а где возвращает их JEP 401 вошёл в JDK 28 как предварительная возможность. Отказ от идентичности позволяет JVM хранить поля без ссылок и раскладывать компоненты по регистрам или стеку, но ускорение не гарантировано. Неизменяемые поля JVM может хранить плоско, а для изменяемых выбирает ссылку, чтобы потоки не увидели значение из частей разных записей. JIT-компилятор…
Как показать вызовы инструментов в интерфейсе на Spring AI 2.0 Spring AI 2.0 вынес цикл вызова инструментов из реализаций отдельных моделей в цепочку советников ChatClient . Теперь его можно обернуть собственным советником, увидеть промежуточные события и показать пользователю, какой метод выполняется до появления ответа модели. В примере наблюдающий советник ставится перед ToolCallingAdvisor и получает события…
Quarkus 3.29: что изменилось в тестах CDI-компонентов QuarkusComponentTest запускает не всё приложение, а только CDI-контейнер и сервис конфигурации. Тестируемый бин остаётся реальным, а отсутствующие зависимости автоматически заменяются моками Mockito. Их можно внедрить через @InjectMock и настроить в тестовом методе. В Quarkus 3.29 переработали загрузку классов. Расширение теперь поддерживает преобразование…
Как Spring AI 2.0 исправляет структурированный вывод по JSON Schema Обычный entity(TalkSubmission.class) строит схему из Java-типа и преобразует ответ модели в объект. Если небольшая локальная модель пропустит поле или вернёт недопустимый null , запрос завершится ошибкой 500. Новый validateSchema(...) сверяет JSON со схемой. При ошибке Spring AI передаёт модели причину и повторяет вызов, по умолчанию до трёх раз.…
Как профилировать Java-приложения с JDK Flight Recorder JDK Flight Recorder (JFR) встроен в OpenJDK и записывает события JVM с небольшими накладными расходами. Его можно использовать для постоянного наблюдения за приложением, а собранную телеметрию разбирать при снижении производительности или сбоях в продакшене. Материал показывает, как начать работу с JFR, записать данные и перейти к их анализу. Отдельные сценарии…
Quarkus 3.31.2: как измерить покрытие runtime-модулей расширений До версии 3.31.2 расширение quarkus-jacoco учитывало код из @QuarkusTest , но не покрытие runtime-модулей в QuarkusUnitTest . Именно такие тесты обычно составляют большинство в расширениях. Причина в сборке: Quarkus применяет офлайн-инструментирование JaCoCo к архивам приложения, а runtime-модуль расширения обычно к ним не относится. Теперь артефакты…
В Quarkus 3.37.0 появился новый вход к реляционным данным Экспериментальное расширение Quarkus Data Hibernate объединяет работу с реляционными базами в одной зависимости. Оно поддерживает расширенные сущности, репозитории с аннотацией @Repository , блокирующий и неблокирующий режимы, а также запросы на чистом SQL. Реализации репозиториев генерируются при компиляции с проверкой запросов и параметров по модели…
Spring и Hibernate: как очищать тестовые данные без @DataJpaTest Hibernate ORM 6.2 добавил SchemaManager : его метод truncateMappedObjects() очищает все таблицы, связанные с JPA-сущностями. В интеграционных тестах Spring очистку можно запускать в @BeforeEach , а затем заново добавлять исходные записи через TransactionTemplate . Так тесты не приходится оборачивать в транзакцию @DataJpaTest . Иначе тестовый…