uz
Feedback
Java

Java

Kanalga Telegram’da o‘tish

Самая актуальная информация по Java По всем вопросам- @haarrp @itchannels_telegram - 🔥лучшие каналы @pythonl - 🐍 @ai_machinelearning_big_data- ml @ArtificialIntelligencedl - AI @datascienceiot - ds @pythonlbooks 📚 РКН: clck.ru/3FmwKr #VRHSZ

Ko'proq ko'rsatish

📈 Telegram kanali Java analitikasi

Java (@javatg) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 16 792 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 535-o'rinni va Rossiya mintaqasida 39 219-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 16 792 obunachiga ega bo‘ldi.

05 Sentabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -9 ga, so‘nggi 24 soatda esa -4 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 11.42% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 5.30% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 919 marta ko‘riladi; birinchi sutkada odatda 891 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 10 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent github, void, api, kotlin, static kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Самая актуальная информация по Java По всем вопросам- @haarrp @itchannels_telegram - 🔥лучшие каналы @pythonl - 🐍 @ai_machinelearning_big_data- ml @ArtificialIntelligencedl - AI @datascienceiot - ds @pythonlbooks 📚 РКН: clck.ru/3FmwKr #VR...

Yuqori yangilanish chastotasi (oxirgi ma’lumot 06 Sentabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

16 792
Obunachilar
-424 soatlar
+227 kun
-930 kun
Obunachilarni jalb qilish
Sentabr '26
Sentabr '26
+38
8 kanalda
Avgust '26
+181
39 kanalda
Get PRO
Iyul '26
+204
1 kanalda
Get PRO
Iyun '26
+132
0 kanalda
Get PRO
May '26
+70
1 kanalda
Get PRO
Aprel '26
+66
1 kanalda
Get PRO
Mart '26
+320
22 kanalda
Get PRO
Fevral '26
+180
46 kanalda
Get PRO
Yanvar '26
+378
127 kanalda
Get PRO
Dekabr '25
+153
3 kanalda
Get PRO
Noyabr '25
+205
43 kanalda
Get PRO
Oktabr '25
+103
13 kanalda
Get PRO
Sentabr '25
+139
38 kanalda
Get PRO
Avgust '25
+375
9 kanalda
Get PRO
Iyul '25
+432
76 kanalda
Get PRO
Iyun '25
+452
73 kanalda
Get PRO
May '25
+251
1 kanalda
Get PRO
Aprel '25
+217
28 kanalda
Get PRO
Mart '25
+208
1 kanalda
Get PRO
Fevral '25
+220
41 kanalda
Get PRO
Yanvar '25
+311
43 kanalda
Get PRO
Dekabr '24
+600
64 kanalda
Get PRO
Noyabr '24
+1 051
189 kanalda
Get PRO
Oktabr '24
+1 867
68 kanalda
Get PRO
Sentabr '24
+719
202 kanalda
Get PRO
Avgust '24
+663
42 kanalda
Get PRO
Iyul '24
+768
52 kanalda
Get PRO
Iyun '24
+867
58 kanalda
Get PRO
May '24
+486
36 kanalda
Get PRO
Aprel '24
+817
46 kanalda
Get PRO
Mart '24
+777
21 kanalda
Get PRO
Fevral '24
+775
5 kanalda
Get PRO
Yanvar '24
+811
46 kanalda
Get PRO
Dekabr '23
+156
38 kanalda
Get PRO
Noyabr '23
+3 105
57 kanalda
Get PRO
Oktabr '23
+203
20 kanalda
Get PRO
Sentabr '23
+484
0 kanalda
Get PRO
Avgust '23
+1 199
0 kanalda
Get PRO
Iyul '23
+1 849
0 kanalda
Get PRO
Iyun '23
+646
0 kanalda
Get PRO
May '23
+615
0 kanalda
Get PRO
Aprel '23
+1 217
0 kanalda
Get PRO
Mart '23
+3 950
0 kanalda
Get PRO
Fevral '23
+330
0 kanalda
Get PRO
Yanvar '23
+2 306
0 kanalda
Get PRO
Dekabr '22
+640
0 kanalda
Get PRO
Noyabr '22
+488
0 kanalda
Get PRO
Oktabr '22
+751
0 kanalda
Get PRO
Sentabr '22
+628
0 kanalda
Get PRO
Avgust '22
+197
0 kanalda
Get PRO
Iyul '22
+923
0 kanalda
Get PRO
Iyun '22
+339
0 kanalda
Get PRO
May '22
+1 180
0 kanalda
Get PRO
Aprel '22
+823
0 kanalda
Get PRO
Mart '22
+3 055
0 kanalda
Get PRO
Fevral '22
+928
0 kanalda
Sana
Obunachilarni jalb qilish
Esdaliklar
Kanallar
06 Sentabr+2
05 Sentabr+2
04 Sentabr+3
03 Sentabr+4
02 Sentabr+10
01 Sentabr+17
Kanal postlari
🚀 Apache Kafka - это распределённая платформа для передачи и хранения потоков событий в реальном времени. Проще: сервисы не общаются напрямую друг с другом, а отправляют события в Kafka, а другие сервисы читают их когда нужно. В 2026 Kafka используют для: • связи микросервисов • логов и событий • real-time аналитики • CDC из баз данных •• обработки больших потоков данных построения event-driven архитектуры Главная причина популярности: высокая пропускная способность, масштабирование и возможность надёжно хранить события и перечитывать их позже. https://www.youtube.com/shorts/Z-t8CCs7ty4

2
🚀 Spring Boot 4 меняет подход к тестовым зависимостям Теперь для каждой технологии используется свой test starter по схеме:
🚀 Spring Boot 4 меняет подход к тестовым зависимостям Теперь для каждой технологии используется свой test starter по схеме: spring-boot-starter-*-test Например, для Spring Security: spring-boot-starter-security-test Что это даёт: - у каждой технологии свой тестовый starter - spring-boot-starter-test подтягивается транзитивно - зависимости для тестов становятся понятнее и аккуратнее - меньше ручной сборки test classpath Для Security-тестов в Spring Boot 4 лучше подключать именно ...-security-test, а не отдельный spring-security-test.
1 051
3
Школа программирования Java Online Projects поздравляет с Днем Знаний!🧑‍🎓📚 Вышло наше финальное занятие курса по Микросерв
Школа программирования Java Online Projects поздравляет с Днем Знаний!🧑‍🎓📚 Вышло наше финальное занятие курса по Микросервисной архитектуре — «Нагрузочное тестирование. Gatling». На нем мы на практике разбираем, как наше приложение ведет себя под реальной высокой нагрузкой. Вместе с ним мы запускаем последнюю акцию перед подорожанием: 🔥 Скидка 50% на курсы «Микросервисы, Kafka, Docker Spring Cloud, WebFlux» и «Деплой микросервисов в Kubernetis/Helm» ✨ Бонусы: выпускные проекты Rescue Service и TopJava2 ✨ Курс TopKotlin или DocJava в подарок Суперпредложение: скидка 55% скидка на всю линейку Микросервисов + все бонусы включены🔥 Программа на 100% покрывает продвинутый стек компетенций: ✨ Архитектура и веб-стек — начинаем с реактивных приложений: Project Reactor, Spring WebFlux, R2DBC. Дальше переходим на Spring Boot 4 — полный MVC-стек и виртуальные потоки (Virtual Threads). ✨ Инфраструктура Spring Cloud — отказоустойчивые системы на Spring Cloud Gateway и Config Server, паттерны Circuit Breaker, RateLimiter, Retry. ✨ Event-Driven & Data — асинхронное взаимодействие через Kafka, сериализация в Avro и хранение схем в Schema Registry, паттерн Outbox с Kafka Connect и Debezium поверх PostgreSQL, Hibernate/JPA и миграции Flyway. ✨ Безопасность — сквозная аутентификация и авторизация на Keycloak, OAuth 2.0, OpenID Connect и JWT, защита от CSRF, хранение сессий в Redis. ✨ Тестирование и качество — интеграционные тесты с Testcontainers, WireMock и Awaitility, проверка под высокой нагрузкой с Gatling. ✨ Observability — метрики, логи и распределенные трассировки через Micrometer, Prometheus, Loki, Tempo (или Zipkin) и визуализация всего этого в Grafana. ✨ DevOps и развертывание — пайплайны в GitHub Actions, Docker и Docker Compose, оркестрация в Kubernetes, управление релизами через Helm. 🚀 Больше 30 технологий в одной линейке! Успейте забрать курсы по суперцене до окончания акции! 💥 ИНН: 782581076920 ОГРНИП: 317784700063201 ИП Кислин Григорий Ефимович, erid: 2VtzqvsC3jZ
1 077
4
Spring Boot 4 улучшил наблюдаемость Redis через Observation API. Теперь команды Redis можно автоматически связывать с метрика
Spring Boot 4 улучшил наблюдаемость Redis через Observation API. Теперь команды Redis можно автоматически связывать с метриками и трассировками: - latency операций - spans для Redis-команд - ошибки и длительность запросов - интеграция с общей системой наблюдаемости приложения Особенно удобно использовать это вместе с OpenTelemetry starter, чтобы Redis сразу попадал в единый tracing и metrics pipeline. Для продакшена это полезно тем, что проблемы Redis можно видеть не отдельно, а прямо внутри полного пути запроса через приложение. #SpringBoot4 #Redis
1 374
5
Spring Boot 4: консольные логи теперь можно отключить одной настройкой. logging: console: enabled: false Полезно для продакше
Spring Boot 4: консольные логи теперь можно отключить одной настройкой. logging: console: enabled: false Полезно для продакшена и контейнеров, где логи уходят не в stdout, а, например, в файл или через OTLP. При этом остальные способы логирования можно оставить: • file appender • удалённый сбор логов • OTLP • собственные appenders Удобная мелочь, которая позволяет не городить отдельную конфигурацию Logback только ради отключения консоли.
1 827
6
💡 Java: не используй `Thread.sleep()` для ожидания работы Thread.sleep() - это просто пауза на заданное время. Проблема в то
💡 Java: не используй `Thread.sleep()` для ожидания работы Thread.sleep() - это просто пауза на заданное время. Проблема в том, что ты угадываешь: ❌ поток может проснуться слишком рано ❌ или наоборот, ждать дольше, чем нужно ❌ polling через sleep() создаёт лишние задержки и проверки Для координации потоков лучше использовать: ✅ wait() / notify() ✅ CountDownLatch ✅ другие примитивы синхронизации из java.util.concurrent Например: CountDownLatch done = new CountDownLatch(1); done.await(); // ждём сигнал done.countDown(); // работа завершена А если задача должна выполняться периодически, вместо бесконечного цикла с sleep() лучше взять ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor(); exec.scheduleAtFixedRate( this::doWork, 0, 1, TimeUnit.SECONDS ); Thread.sleep() хорошо подходит для простой задержки. Для ожидания события и периодических задач в Java есть более точные инструменты. #Java #Concurrency
1 974
7
🚀 Spring Boot 4 упростил работу с MongoDB health checks Теперь для проверки состояния MongoDB больше не нужен Spring Data. Ч
🚀 Spring Boot 4 упростил работу с MongoDB health checks Теперь для проверки состояния MongoDB больше не нужен Spring Data. Что изменилось: - health indicators переехали в spring-boot-mongodb - работают напрямую с MongoDB driver - для /actuator/health достаточно spring-boot-starter-mongodb - Spring Data подключать не обязательно То есть если сервис работает с MongoDB напрямую через драйвер, health check всё равно можно получить без лишней зависимости. Полезное изменение для более лёгких Spring Boot 4 сервисов.
2 019
8
Java-ловушка: . в формате числа не всегда означает точку В DecimalFormat шаблон вроде: #,###.## не гарантирует вывод 1,234.56
Java-ловушка: . в формате числа не всегда означает точку В DecimalFormat шаблон вроде: #,###.## не гарантирует вывод 1,234.56. Символы зависят от locale: 🇺🇸 US → 1,234.56 🇮🇹 Italy → 1.234,56 Поэтому если формат предназначен для конкретной страны, лучше задавать её явно: DecimalFormatSymbols it = new DecimalFormatSymbols(Locale.ITALY); DecimalFormat format = new DecimalFormat("#,###.##", it); Иначе приложение может внезапно начать форматировать числа иначе просто потому, что JVM запустили с другой локалью. Мелочь, которая особенно неприятно всплывает в деньгах, отчётах и CSV.
2 199
9
🖥 Java: почему 1.234,56 ломает Double.parseDouble() В Java число - это не всегда просто строка с точкой. Например: Double.pa
🖥 Java: почему 1.234,56 ломает Double.parseDouble() В Java число - это не всегда просто строка с точкой. Например: Double.parseDouble("1.234,56"); закончится NumberFormatException. Проблема в локали: в разных странах . и , означают разное. Для таких случаев лучше использовать: NumberFormat format = NumberFormat.getInstance(Locale.ITALY); Number value = format.parse("1.234,56"); double n = value.doubleValue(); Получим: 1234.56 Главное правило: если число пришло от пользователя, из CSV или внешней системы — сначала узнай его locale. Иначе можно получить не только ошибку, но и тихо распарсить совсем не то число.
2 227
10
⚡️ Spring Boot 4: `@ConfigurationPropertiesSource` для типов из других модулей В Spring Boot 4 появилась полезная штука для к
⚡️ 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
2 138
11
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можн
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_1001_notes Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: t.me/fizmat Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
1 745
12
Java Records: меньше шаблонного кода для обычных data-классов Если класс нужен в основном для хранения данных, record позволя
Java Records: меньше шаблонного кода для обычных data-классов Если класс нужен в основном для хранения данных, record позволяет сильно сократить код. Вместо обычного класса с полями, конструктором, equals(), hashCode() и toString() можно написать: public record User(String name, int age, String email) {} Java сама создаст: user.name(); user.age(); user.email(); user.equals(other); user.hashCode(); user.toString(); При этом record остаётся неизменяемым по ссылкам на свои компоненты: сеттеров нет, а поля фактически final. Можно добавить и компактный конструктор для валидации: public record User(String name, int age, String email) { public User { if (age < 0) { throw new IllegalArgumentException("Age cannot be negative"); } } } Records появились как preview в Java 14 и стали полноценной частью языка в Java 16. Удобный вариант для DTO, результатов запросов, событий, конфигурационных объектов и других небольших структур данных.
1 643
13
25 августа встречаемся на Agentic Coding Meetup в Сбер.Среде и в онлайне⚡️ AI-агенты уже умеют писать код. Но самое интересно
25 августа встречаемся на Agentic Coding Meetup в Сбер.Среде и в онлайне⚡️ AI-агенты уже умеют писать код. Но самое интересное начинается дальше — когда вместе с инструментами меняются роли инженеров, команды и сам процесс разработки. 🔥 Поговорим о том, как agentic coding выглядит на практике: новые инженерные роли и модели команд, SDD и трансформация процессов, coding-агенты и инструменты, подходы к постановке задач и управлению контекстом, а также опыт внедрения AI в разработку больших технологических компаний. ⏳ Начало в 17:00, встреча очных гостей — в 16:00. Количество очных мест ограничено — успейте зарегистрироваться!
1 509
14
В Java clone() легко принять за полноценную копию объекта. Но super.clone() делает только shallow copy. Сам объект будет новы
В Java clone() легко принять за полноценную копию объекта. Но super.clone() делает только shallow copy. Сам объект будет новым, а ссылки на вложенные объекты останутся прежними. То есть: Main shallow = (Main) super.clone(); shallow и оригинал будут разными объектами, но dependency у них может указывать на один и тот же экземпляр. Поэтому изменение вложенного объекта через одну копию неожиданно отразится и в другой. Для deep copy нужно отдельно клонировать вложенные поля: Main deep = (Main) super.clone(); deep.setDependency((Dependency) this.dependency.clone()); Теперь dependency тоже будет отдельным объектом. Мелочь, на которой легко поймать очень неприятный баг: clone() копирует оболочку, а не весь граф объектов.
1 783
15
☕️ В Spring Boot 4 появился новый JmsClient - более современная альтернатива привычному JmsTemplate. Главное отличие - fluent
☕️ В Spring Boot 4 появился новый JmsClient - более современная альтернатива привычному JmsTemplate. Главное отличие - fluent API, из-за которого код отправки и получения сообщений становится заметно чище. При этом JmsTemplate никуда не исчезает и продолжает работать без изменений. Для старых проектов переписывать ничего не нужно, а для нового JMS-кода Spring теперь рекомендует смотреть в сторону JmsClient. #SpringBoot4 #JMS
2 129
16
🔴 Тестовый собес с Java-разработчиком уже завтра! [+ разбор 50 сложных вопросов в подарок ] 19 августа (уже завтра!) в 19:00
🔴 Тестовый собес с Java-разработчиком уже завтра!  [+ разбор 50 сложных вопросов в подарок ] 19 августа (уже завтра!) в 19:00 по мск приходи онлайн, чтобы посмотреть на настоящее интервью на Middle Java-разработчика! Собеседование проведёт Сергей Чамкин - старший разработчик из Uzum, ex-WildBerries Как это будет: 📂 Сергей задаст разработчику-добровольцу вопросы и задачи, которые могут спросить на реальном собесе 📂 После каждого ответа респондента ты услышишь подробный комментарий от ментора и поймёшь, чего на самом деле ожидает собеседующий на интервью 📂 В конце сможешь задать любой вопрос Сергею и получить на него развёрнутый ответ Эфир проходит в рамках менторской программы от ШОРТКАТ для Java-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы Но ты можешь посмотреть его бесплатно 🔥 Только завтра, в прямом эфире! 🎁 Подарок для всех, кто зарегается на веб — файл с ОТВЕТАМИ НА 50 СЛОЖНЫХ ВОПРОСОВ с Java-собеседований 🔥 Жми на кнопку, чтобы попасть на эфир и забрать подарок ↓ @shortcut_sh_bot  Реклама. О рекламодателе.
1 915
17
☕ Java-баг, который выглядит нормально, но ломает `HashMap` Что выведет этот код? Map, String&gt; map = new HashMa
☕ Java-баг, который выглядит нормально, но ломает `HashMap` Что выведет этот код? Map<List<Integer>, String> map = new HashMap<>(); List<Integer> key = new ArrayList<>(List.of(1, 2)); map.put(key, "Ritesh"); key.add(3); System.out.println(map.get(key)); Многие ожидают: Ritesh Но результат: ```text null ``` Почему? HashMap ищет ключ через: ```java hashCode() equals() ``` Когда мы сделали: ```java map.put(key, "Ritesh"); ``` ключ был: ```text [1, 2] ``` У него был один hashCode. Но потом: ```java key.add(3); ``` ключ стал: ```text [1, 2, 3] ``` И его hashCode изменился. HashMap уже положил объект в bucket по старому hash, а при get() ищет по новому. Схема: ```text put() [1,2] hash = X ↓ bucket X key.add(3) [1,2,3] hash = Y get() ищем bucket Y → запись не найдена ``` Главное правило: ❌ Не изменяйте объект после того, как использовали его как ключ в HashMap. Лучше использовать: ✅ String ✅ Integer ✅ record ✅ immutable-объекты Например: ```java Map<List<Integer>, String> map = new HashMap<>(); List<Integer> key = List.of(1, 2); map.put(key, "value"); ``` Самые опасные баги в Java - те, где объект всё ещё существует, ссылка всё та же, но структура данных уже не может его нормально найти. #java #backend #programming
1 749
18
💡 В Java можно избавиться от лишнего cast после instanceof. Старый вариант: if (animal instanceof Dog) { Dog d = (Dog) anima
💡 В Java можно избавиться от лишнего cast после instanceof. Старый вариант: if (animal instanceof Dog) { Dog d = (Dog) animal; d.bark(); } С pattern matching переменная объявляется прямо в проверке: if (animal instanceof Dog d) { d.bark(); } d существует только там, где условие instanceof гарантированно истинно. Меньше кода, меньше лишних приведений типов и проще читать. #Java #PatternMatching
2 119
19
Matn yo'q...
2 385
20
⚡️ Spring Boot 4: для интеграционных тестов REST лучше переходить с TestRestTemplate на RestTestClient. Почему это удобнее: -
⚡️ 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
2 678