Java
16.6K subscribers
1.26K photos
74 videos
2 files
1.12K links
Самая актуальная информация по Java

По всем вопросам- @haarrp

@itchannels_telegram - 🔥лучшие каналы

@pythonl - 🐍

@ai_machinelearning_big_data- ml

@ArtificialIntelligencedl - AI

@datascienceiot - ds

@pythonlbooks 📚

РКН: clck.ru/3FmwKr

#VRHSZ
Download Telegram
🚀 HTTP-клиенты в Spring Boot через @HttpExchange

Описываете внешний API обычным Java-интерфейсом:

@HttpExchange("https://api.example.com")
public interface UserClient {

@GetExchange("/users/{id}")
User findById(@PathVariable Long id);

@PostExchange("/users")
User create(@RequestBody User user);
}

Spring сам создаёт реализацию клиента, после чего его можно внедрять как обычный bean.

Таймауты, SSL и другие параметры настраиваются через spring.http.clients.*.

Меньше шаблонного кода, понятный контракт и удобное тестирование.

#SpringBoot4 #Java #HttpExchange
🔥13👍6❤2
💡 Spring Boot 4: найдите устаревшие настройки до того, как они сломают запуск

При миграции на Spring Boot 4 часть старых configuration properties была переименована или удалена. Проверять большие application.yml вручную необязательно — добавьте временный модуль:

Gradle:


runtimeOnly("org.springframework.boot:spring-boot-properties-migrator")


Maven:


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-properties-migrator</artifactId>
<scope>runtime</scope>
</dependency>


При запуске приложения migrator:

- найдёт устаревшие ключи;
- покажет новые названия в логах;
- временно подменит свойства во время выполнения.

Важный нюанс: модуль не переписывает конфигурационные файлы. Исправьте ключи вручную, снова запустите приложение и удалите зависимость.

properties-migrator — это временный помощник для миграции, а не библиотека, которую стоит оставлять в production.

#SpringBoot4 #Java #Migration
🔥14👍3❤1
✔️ Spring Boot 4 убрал Undertow - при миграции это легко пропустить

Причина простая: Spring Boot 4 перешёл на Servlet 6.1, а Undertow с этой версией Servlet API несовместим. Поэтому из Boot 4 удалили и поддержку embedded Undertow, и spring-boot-starter-undertow.

Если раньше было:


<artifactId>spring-boot-starter-undertow</artifactId>


теперь используйте Tomcat по умолчанию или подключайте Jetty:


<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>


Ещё один важный момент: не разворачивайте Spring Boot 4 в старом Servlet-контейнере — требуется совместимость с Servlet 6.1.

Перед миграцией Boot 3 → 4 обязательно проверьте серверную часть приложения.

#SpringBoot4 #Java #Servlet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1🔥1
⚡️ Spring Boot 4: для интеграционных тестов REST лучше переходить с TestRestTemplate на RestTestClient.

Почему это удобнее:

- fluent API в стиле RestClient;
- одинаковый подход для тестов через MockMvc и реальный HTTP-порт;
- проще читать цепочки request → response → assertions;
- меньше привязки к старому TestRestTemplate.

Пример:


restTestClient.get()
.uri("/api/users/42")
.exchange()
.expectStatus().isOk()
.expectBody(User.class)
.value(user -> assertThat(user.id()).isEqualTo(42));


Если автоконфигурация не подтянулась автоматически, добавляем:


@AutoConfigureRestTestClient


Если начинаете новый проект на Boot 4, TestRestTemplate уже вряд ли стоит выбирать по привычке.

#SpringBoot4 #Java #RestTestClient #Testing
👍7❤1🔥1
☕️ В Spring Boot 4 появился новый JmsClient - более современная альтернатива привычному JmsTemplate.

Главное отличие - fluent API, из-за которого код отправки и получения сообщений становится заметно чище.

При этом JmsTemplate никуда не исчезает и продолжает работать без изменений.

Для старых проектов переписывать ничего не нужно, а для нового JMS-кода Spring теперь рекомендует смотреть в сторону JmsClient.

#SpringBoot4 #JMS
👍4❤1🔥1
⚡️ Spring Boot 4: `@ConfigurationPropertiesSource` для типов из других модулей

В Spring Boot 4 появилась полезная штука для конфигурации больших проектов.

@ConfigurationPropertiesSource позволяет генерировать metadata для типов, которые находятся не в текущем модуле, а, например, в общей библиотеке или отдельном starter-модуле.

Раньше с такими внешними типами IDE-подсказки для application.yml и application.properties могли быть неполными или вообще отсутствовать.

Теперь можно явно указать источник конфигурационных свойств и получить нормальную metadata даже для внешних классов.

Особенно полезно для:

— multi-module проектов
— внутренних Spring Boot starter'ов
— shared configuration libraries
— больших платформенных команд

Мелкая фича, но для DX в крупных Spring Boot проектах очень приятная.

#SpringBoot4 #Config
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🎉3❤2👍1
🖥 Spring Boot 4 улучшил наблюдаемость Redis через Observation API.

Теперь команды Redis можно автоматически связывать с метриками и трассировками:

- latency операций
- spans для Redis-команд
- ошибки и длительность запросов
- интеграция с общей системой наблюдаемости приложения

Особенно удобно использовать это вместе с OpenTelemetry starter, чтобы Redis сразу попадал в единый tracing и metrics pipeline.

Для продакшена это полезно тем, что проблемы Redis можно видеть не отдельно, а прямо внутри полного пути запроса через приложение.

#SpringBoot4 #Redis
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥4
🚀 Spring Boot 4 получил полноценную поддержку Kotlin Serialization

Теперь для kotlinx.serialization есть отдельный starter:

spring-boot-starter-kotlinx-serialization-json

Что он делает:

- автоматически создаёт Json bean
- регистрирует HTTP message converter
- позволяет настраивать сериализацию через spring.kotlinx.serialization.json.*
- работает с привычными @Serializable data class

Пример настройки:

pretty-print: true
ignore-unknown-keys: true

Для Kotlin-проектов на Spring Boot это убирает лишнюю ручную конфигурацию и делает kotlinx.serialization полноценной альтернативой Jackson.

#SpringBoot4 #Kotlin
👍7❤3🔥2
🚀 Spring Boot 4 получил отдельный starter для RestClient

Теперь imperative HTTP-клиент можно подключать через:

spring-boot-starter-restclient

Для реактивного WebClient используется:

spring-boot-starter-webclient

А настройки HTTP-клиентов собраны под единым префиксом:

spring.http.clients.*

То есть конфигурация стала понятнее, а выбор между imperative и reactive подходом — более явным.

#SpringBoot4 #RestClient #Java
❤7👍4🔥4🎉1
Spring Boot 4: как перенести старые настройки

При обновлении добавьте временную зависимость:


runtimeOnly("org.springframework.boot:spring-boot-properties-migrator")


После запуска приложения migrator:

* найдёт устаревшие и переименованные параметры;
* выведет подсказки в логах;
* временно преобразует старые ключи во время выполнения.

Исправьте настройки в application.properties или application.yaml, убедитесь, что предупреждения исчезли, и удалите зависимость. Оставлять её в проекте постоянно не нужно.

#SpringBoot4 #Migration


При обновлении добавьте временную зависимость:


runtimeOnly("org.springframework.boot:spring-boot-properties-migrator")


После запуска приложения migrator:

* найдёт устаревшие и переименованные параметры;
* выведет подсказки в логах;
* временно преобразует старые ключи во время выполнения.

Исправьте настройки в application.properties или application.yaml, убедитесь, что предупреждения исчезли, и удалите зависимость. Оставлять её в проекте постоянно не нужно.

#SpringBoot4 #Migration
👍8❤5🤩2🥰1