Ошибка "Error starting ApplicationContext" в Spring — как найти и исправить
В статье Java67 объясняют типичные причины (конфликты зависимостей, ошибки конфигурации и бинов, проблемы с БД и classpath) и предлагают практические шаги: смотреть логи и debug, чистить сборку, обновлять зависимости и обращаться в сообщество. Обзор: полный справочник по Java и Spring
На сайте Javarevisited собрана огромная подборка материалов: туториалы, экзамены, интервью и советы по Java, Spring Boot, микросервисам, SQL, Kubernetes и другим технологиям — удобно для подготовки к собеседованиям и прокачки навыков. Архив и навигация блога: На странице представлен хронологический архив записей по годам и месяцам, ссылки на политику конфиденциальности и условия, раздел популярных постов и форма подписки. Указан копирайт Soma Sharma (2021–2025).
Подробности: http://www.java67.com/2023/08/how-to-solve-error-starting-application.html
#en
@a_cup_of_java | Другие наши каналы
В статье Java67 объясняют типичные причины (конфликты зависимостей, ошибки конфигурации и бинов, проблемы с БД и classpath) и предлагают практические шаги: смотреть логи и debug, чистить сборку, обновлять зависимости и обращаться в сообщество. Обзор: полный справочник по Java и Spring
На сайте Javarevisited собрана огромная подборка материалов: туториалы, экзамены, интервью и советы по Java, Spring Boot, микросервисам, SQL, Kubernetes и другим технологиям — удобно для подготовки к собеседованиям и прокачки навыков. Архив и навигация блога: На странице представлен хронологический архив записей по годам и месяцам, ссылки на политику конфиденциальности и условия, раздел популярных постов и форма подписки. Указан копирайт Soma Sharma (2021–2025).
Подробности: http://www.java67.com/2023/08/how-to-solve-error-starting-application.html
#en
@a_cup_of_java | Другие наши каналы
Экспорт приватных типов в Go: почему это антипаттерн
азбираем антипаттерн, его последствия для инкапсуляции и архитектуры, а также показываем идиоматичные способы инициализации структур и сервисов в Go.
Читать: «Экспорт приватных типов в Go: почему это антипаттерн»
@a_cup_of_java | Другие наши каналы
азбираем антипаттерн, его последствия для инкапсуляции и архитектуры, а также показываем идиоматичные способы инициализации структур и сервисов в Go.
Читать: «Экспорт приватных типов в Go: почему это антипаттерн»
@a_cup_of_java | Другие наши каналы
👎3
Оркестрация на BPMN: взгляд изнутри
Современные подходы к разработке программного обеспечения диктуют необходимость быстрого внедрения и изменения бизнес-сценариев прямо в продакшене. Особенно это критично для систем, где логика процессов часто корректируется — например, в финансовых, маркетинговых или рекламных платформах.
Одним из наиболее удобных инструментов для этого сегодня является оркестрация с использованием BPMN-диаграмм, где визуальное моделирование бизнес-процесса превращается в исполняемую логику.
Читать: https://habr.com/ru/articles/960278/?utm_campaign=960278
@a_cup_of_java | Другие наши каналы
Современные подходы к разработке программного обеспечения диктуют необходимость быстрого внедрения и изменения бизнес-сценариев прямо в продакшене. Особенно это критично для систем, где логика процессов часто корректируется — например, в финансовых, маркетинговых или рекламных платформах.
Одним из наиболее удобных инструментов для этого сегодня является оркестрация с использованием BPMN-диаграмм, где визуальное моделирование бизнес-процесса превращается в исполняемую логику.
Читать: https://habr.com/ru/articles/960278/?utm_campaign=960278
@a_cup_of_java | Другие наши каналы
Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка
Apple выпустила Swift SDK для Android — теперь на Swift можно писать нативные Android-приложения и переносить код между платформами
Читать: «Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка»
@a_cup_of_java | Другие наши каналы
Apple выпустила Swift SDK для Android — теперь на Swift можно писать нативные Android-приложения и переносить код между платформами
Читать: «Apple выпустила Swift SDK для написания Android-приложений — спустя 11 лет после релиза языка»
@a_cup_of_java | Другие наши каналы
⚡7❤1
RAG: как объединить генеративные модели и бизнес-данные
В статье Маттео Росси показано, как на базе Spring Boot, Spring AI, MongoDB Atlas и OpenAI построить гибкий pipeline для точных контекстных ответов и прикладных решений в финансах, здравоохранении и поддержке клиентов.
Подробности: https://www.infoq.com/articles/rag-with-spring-mongo-open-ai/
#en
@a_cup_of_java | Другие наши каналы
В статье Маттео Росси показано, как на базе Spring Boot, Spring AI, MongoDB Atlas и OpenAI построить гибкий pipeline для точных контекстных ответов и прикладных решений в финансах, здравоохранении и поддержке клиентов.
Подробности: https://www.infoq.com/articles/rag-with-spring-mongo-open-ai/
#en
@a_cup_of_java | Другие наши каналы
⚡1
Обзор Spring: RC для Boot, Security, GraphQL и других
По материалам InfoQ: вышли первые релиз-кандидаты множества модулей Spring — Boot 4.0, Security 7.0, GraphQL 2.0, Integration, Modulith, Batch, AMQP, Kafka, Pulsar и др. Коротко о фичах, апгрейдах зависимостей и важных исправлениях.
Подробности: https://www.infoq.com/news/2025/10/spring-news-roundup-oct20-2025/
#en
@a_cup_of_java | Другие наши каналы
По материалам InfoQ: вышли первые релиз-кандидаты множества модулей Spring — Boot 4.0, Security 7.0, GraphQL 2.0, Integration, Modulith, Batch, AMQP, Kafka, Pulsar и др. Коротко о фичах, апгрейдах зависимостей и важных исправлениях.
Подробности: https://www.infoq.com/news/2025/10/spring-news-roundup-oct20-2025/
#en
@a_cup_of_java | Другие наши каналы
⚡1
JEP 401: Value классы и объекты
Команда проекта Valhalla выпустила early-access сборку JDK с полной реализацией JEP 401 — value-классы и объекты теперь можно попробовать в действии! В новом переводе от команды Spring АйО — примеры использования, объяснение концепции, сравнение производительности с обычными объектами и практические советы для разработчиков.
Читать: https://habr.com/ru/companies/spring_aio/articles/960880/?utm_campaign=960880
@a_cup_of_java | Другие наши каналы
Команда проекта Valhalla выпустила early-access сборку JDK с полной реализацией JEP 401 — value-классы и объекты теперь можно попробовать в действии! В новом переводе от команды Spring АйО — примеры использования, объяснение концепции, сравнение производительности с обычными объектами и практические советы для разработчиков.
Читать: https://habr.com/ru/companies/spring_aio/articles/960880/?utm_campaign=960880
@a_cup_of_java | Другие наши каналы
🔥1
BDD: Как заставить тесты говорить на одном языке с бизнесом (и перестать платить за недопонимание)
Привет! Меня зовут Анатолий, я ведущий разработчик в ITFB Group, и сегодня я хочу рассказать о том, как можно превратить скучные тесты в главного специалиста по продукту.
Знакомо: ваши JUnit-тесты проходят, CI/CD зелёный, все довольны. Но тут приходит бизнес-аналитик и спрашивает: "А этот сценарий проверяет, что будет, если клиент с рейтингом 700 запросит 10 миллионов?"
Вы начинаете лихорадочно копаться в коде, пытаясь найти тот самый @Test... А что если бы ответ на этот вопрос лежал не в глубинах Java-кода, а в красивом, читаемом файле, который понятен всем — от тимлида до заказчика?
Читать: https://habr.com/ru/companies/itfb/articles/960972/?utm_campaign=960972
@a_cup_of_java | Другие наши каналы
Привет! Меня зовут Анатолий, я ведущий разработчик в ITFB Group, и сегодня я хочу рассказать о том, как можно превратить скучные тесты в главного специалиста по продукту.
Знакомо: ваши JUnit-тесты проходят, CI/CD зелёный, все довольны. Но тут приходит бизнес-аналитик и спрашивает: "А этот сценарий проверяет, что будет, если клиент с рейтингом 700 запросит 10 миллионов?"
Вы начинаете лихорадочно копаться в коде, пытаясь найти тот самый @Test... А что если бы ответ на этот вопрос лежал не в глубинах Java-кода, а в красивом, читаемом файле, который понятен всем — от тимлида до заказчика?
Читать: https://habr.com/ru/companies/itfb/articles/960972/?utm_campaign=960972
@a_cup_of_java | Другие наши каналы
Java: недельный обзор — CPU Oracle, Grails 7, Micronaut, Hazelcast, LangChain4j
По InfoQ: выпущен октябрьский Critical Patch Update, BellSoft обновил Liberica JDK; GA Grails 7.0, Micronaut 4.10, Hazelcast 5.6, LangChain4j 1.8 и бета Open Liberty. Читайте статью InfoQ.
Подробности: https://www.infoq.com/news/2025/10/java-news-roundup-oct20-2025/
#en
@a_cup_of_java | Другие наши каналы
По InfoQ: выпущен октябрьский Critical Patch Update, BellSoft обновил Liberica JDK; GA Grails 7.0, Micronaut 4.10, Hazelcast 5.6, LangChain4j 1.8 и бета Open Liberty. Читайте статью InfoQ.
Подробности: https://www.infoq.com/news/2025/10/java-news-roundup-oct20-2025/
#en
@a_cup_of_java | Другие наши каналы
Что еще могёт курсор
Началось все весьма прозаично, клиент позвонить к нам в техподдержку и спросил «а как бы мне поставить ваш софт но в другую схему БД». Собственно вопрос проще некуда — мы писали на спринге, а значит лезем в application.yml и ставим схему. Но, клиент не из тупых и уже это попробовал — не сработало.
Начинаем разбираться что сломалось и кто виноват. Первым делом ДевОпс повторяет кульбиты клиента и выдает простой вердикт: «В 151 миграции лажа». Я открываю и: «батюшки родный, да это же лосенок явное указание схемы!»
Читать: https://habr.com/ru/articles/961056/?utm_campaign=961056
@a_cup_of_java | Другие наши каналы
Началось все весьма прозаично, клиент позвонить к нам в техподдержку и спросил «а как бы мне поставить ваш софт но в другую схему БД». Собственно вопрос проще некуда — мы писали на спринге, а значит лезем в application.yml и ставим схему. Но, клиент не из тупых и уже это попробовал — не сработало.
Начинаем разбираться что сломалось и кто виноват. Первым делом ДевОпс повторяет кульбиты клиента и выдает простой вердикт: «В 151 миграции лажа». Я открываю и: «батюшки родный, да это же лосенок явное указание схемы!»
Читать: https://habr.com/ru/articles/961056/?utm_campaign=961056
@a_cup_of_java | Другие наши каналы
От REST к gRPC и GraphQL: современный подход к API
В статье сравним REST, gRPC и GraphQL с точки зрения производительности, гибкости и архитектуры микросервисов. Покажем, как объединить GraphQL и gRPC для фронтенда и бэкенда, чтобы получить мощный API без лишнего трафика и задержек.
Читать: https://habr.com/ru/articles/961000/?utm_campaign=961000
@a_cup_of_java | Другие наши каналы
В статье сравним REST, gRPC и GraphQL с точки зрения производительности, гибкости и архитектуры микросервисов. Покажем, как объединить GraphQL и gRPC для фронтенда и бэкенда, чтобы получить мощный API без лишнего трафика и задержек.
Читать: https://habr.com/ru/articles/961000/?utm_campaign=961000
@a_cup_of_java | Другие наши каналы
Ошибки, которые инженеры совершают при код-ревью
Код-ревью стало ключевым этапом в разработке: генерация кода с помощью LLM упростилась, а вот проверка его качества по-прежнему требует инженерной экспертизы.
В новом переводе от команды Spring АйО эксперты сообщества подробно и на собственном опыте рассказали про нюансы код-ревью.
Читать: https://habr.com/ru/companies/spring_aio/articles/961332/?utm_campaign=961332
@a_cup_of_java | Другие наши каналы
Код-ревью стало ключевым этапом в разработке: генерация кода с помощью LLM упростилась, а вот проверка его качества по-прежнему требует инженерной экспертизы.
В новом переводе от команды Spring АйО эксперты сообщества подробно и на собственном опыте рассказали про нюансы код-ревью.
Читать: https://habr.com/ru/companies/spring_aio/articles/961332/?utm_campaign=961332
@a_cup_of_java | Другие наши каналы
Шаблоны и принципы деления кода на классы
За 9 лет разработки ПО я периодически выступал в роли ментора и сталкивался с проблемой, которую недавно озвучил начинающий программист после онлайн-курсов:
«Не понимаю, как делить код на классы».
Оказалось, на курсах учили языку, но не программированию. А ведь язык — лишь инструмент, и принципы проектирования кода универсальны для разных языков программирования.
Я показал студенту несколько готовых шаблонов классов, чтобы он мог сразу применить, и хотел дать методичку по теории, но под рукой не оказалось ни заметок, ни статей, ни книг. Поиск в интернете и запросы к ИИ выдавали только материалы по ООП и принципам SOLID, которые мало касались нужной темы. Выходило так, что вся нужная для такой методички информация, лежит у меня в голове.
Так и родилась идея написать эту статью.
Читать: https://habr.com/ru/companies/cinimex/articles/958440/?utm_campaign=958440
@a_cup_of_java | Другие наши каналы
За 9 лет разработки ПО я периодически выступал в роли ментора и сталкивался с проблемой, которую недавно озвучил начинающий программист после онлайн-курсов:
«Не понимаю, как делить код на классы».
Оказалось, на курсах учили языку, но не программированию. А ведь язык — лишь инструмент, и принципы проектирования кода универсальны для разных языков программирования.
Я показал студенту несколько готовых шаблонов классов, чтобы он мог сразу применить, и хотел дать методичку по теории, но под рукой не оказалось ни заметок, ни статей, ни книг. Поиск в интернете и запросы к ИИ выдавали только материалы по ООП и принципам SOLID, которые мало касались нужной темы. Выходило так, что вся нужная для такой методички информация, лежит у меня в голове.
Так и родилась идея написать эту статью.
Читать: https://habr.com/ru/companies/cinimex/articles/958440/?utm_campaign=958440
@a_cup_of_java | Другие наши каналы
Final должен быть значением по умолчанию для Java-классов
А что, если вам сказали бы, что класс без final — это ошибка проектирования? Что возможность наследования должна быть исключением, а не правилом? В новом переводе от команды Spring АйО автор предлагает радикальную идею: все классы должны быть final по умолчанию.
⚠️ Статья была написана ещё до появления Kotlin`а. Цель перевода данной статьи – поднять запылившийся на полке вопрос в дизайне API: "Нужно ли оставлять API открытым по-умолчанию для внешнего расширения?"
Читать: https://habr.com/ru/companies/spring_aio/articles/961686/?utm_campaign=961686
@a_cup_of_java | Другие наши каналы
А что, если вам сказали бы, что класс без final — это ошибка проектирования? Что возможность наследования должна быть исключением, а не правилом? В новом переводе от команды Spring АйО автор предлагает радикальную идею: все классы должны быть final по умолчанию.
⚠️ Статья была написана ещё до появления Kotlin`а. Цель перевода данной статьи – поднять запылившийся на полке вопрос в дизайне API: "Нужно ли оставлять API открытым по-умолчанию для внешнего расширения?"
Читать: https://habr.com/ru/companies/spring_aio/articles/961686/?utm_campaign=961686
@a_cup_of_java | Другие наши каналы
Компактный runtime-DI для Java: JSR-330, Class-File API и миграция за 2 дня
Когда начинал разработку системы многомерного анализа данных временных рядов Dimension-UI, для внедрения зависимостей в исходном коде решил использовать Dagger 2. Практический опыт показал, что для приложений с большим количеством динамически создаваемых объектов инверсия зависимостей, реализованная в Dagger 2, не подходит.
Да, создание графа зависимостей в compile-time — это, во-первых, очень быстро, и, во-вторых, удобно: получаешь сообщения об ошибках конфигурации уже при компиляции.
Но накладные расходы на сопровождение всего этого хозяйства – прямо скажем, это боль.
Чтобы реализовать scope-зависимости, приходится писать и поддерживать много инфраструктурного кода внутри объектов, куда мы внедряем зависимости. В Dagger 2 такая реализация, во-первых, «загрязняет» код, а во-вторых, серьезно осложняет тестирование. Изолировать методы удобным способом не получается: в тестах нужно писать очень много кода, чтобы прокинуть необходимый контекст и корректно мокировать внешние зависимости. Я туда просто не полез — покрывал unit- и UI-тестами только базовую функциональность, где были Singleton-зависимости.
Даже с одними Singleton’ами приходится поднимать отдельную тестовую инфраструктуру для запуска приложения в тестовом режиме. Это не просто неудобно — это очень затратно по времени. Если сравнить усилия, которые надо потратить на реализацию тестирования подобного функционала в Spring и Dagger… Сравнение будет не в пользу Dagger. В целом я начал думать о переходе на runtime-генерацию графа зависимостей.
Читать: https://habr.com/ru/articles/962326/?utm_campaign=962326
@a_cup_of_java | Другие наши каналы
Когда начинал разработку системы многомерного анализа данных временных рядов Dimension-UI, для внедрения зависимостей в исходном коде решил использовать Dagger 2. Практический опыт показал, что для приложений с большим количеством динамически создаваемых объектов инверсия зависимостей, реализованная в Dagger 2, не подходит.
Да, создание графа зависимостей в compile-time — это, во-первых, очень быстро, и, во-вторых, удобно: получаешь сообщения об ошибках конфигурации уже при компиляции.
Но накладные расходы на сопровождение всего этого хозяйства – прямо скажем, это боль.
Чтобы реализовать scope-зависимости, приходится писать и поддерживать много инфраструктурного кода внутри объектов, куда мы внедряем зависимости. В Dagger 2 такая реализация, во-первых, «загрязняет» код, а во-вторых, серьезно осложняет тестирование. Изолировать методы удобным способом не получается: в тестах нужно писать очень много кода, чтобы прокинуть необходимый контекст и корректно мокировать внешние зависимости. Я туда просто не полез — покрывал unit- и UI-тестами только базовую функциональность, где были Singleton-зависимости.
Даже с одними Singleton’ами приходится поднимать отдельную тестовую инфраструктуру для запуска приложения в тестовом режиме. Это не просто неудобно — это очень затратно по времени. Если сравнить усилия, которые надо потратить на реализацию тестирования подобного функционала в Spring и Dagger… Сравнение будет не в пользу Dagger. В целом я начал думать о переходе на runtime-генерацию графа зависимостей.
Читать: https://habr.com/ru/articles/962326/?utm_campaign=962326
@a_cup_of_java | Другие наши каналы
Почему ваш AI-ассистент пишет «вырвиглазный» код, и как это исправить грубой силой
Технически это называется «неконсистентный». А по-человечески — боль. Делюсь рабочим, хоть и неидеальным, способом её лечения.
Читать: https://habr.com/ru/articles/962490/?utm_campaign=962490
@a_cup_of_java | Другие наши каналы
Технически это называется «неконсистентный». А по-человечески — боль. Делюсь рабочим, хоть и неидеальным, способом её лечения.
Читать: https://habr.com/ru/articles/962490/?utm_campaign=962490
@a_cup_of_java | Другие наши каналы
Насколько Java быстрая?
Некоторые считают Java раздутым монстром, а Rust — чемпионом производительности. Но что, если взглянуть на современную Java с Vector API и многопоточностью?
В новом переводе от команды Spring АйО посмотрим на запуск масштабной симуляции частиц и сравним результаты. Правда ли, что бывалая Java всё ещё умеет удивлять?
Сравнение performance-а языков всегда было холиварной темой. Рекомендуем расценивать статью как приглашение к конструктивной дискуссиии, а не как призыв к конкретному действию.
Читать: https://habr.com/ru/companies/spring_aio/articles/962604/?utm_campaign=962604
@a_cup_of_java | Другие наши каналы
Некоторые считают Java раздутым монстром, а Rust — чемпионом производительности. Но что, если взглянуть на современную Java с Vector API и многопоточностью?
В новом переводе от команды Spring АйО посмотрим на запуск масштабной симуляции частиц и сравним результаты. Правда ли, что бывалая Java всё ещё умеет удивлять?
Сравнение performance-а языков всегда было холиварной темой. Рекомендуем расценивать статью как приглашение к конструктивной дискуссиии, а не как призыв к конкретному действию.
Читать: https://habr.com/ru/companies/spring_aio/articles/962604/?utm_campaign=962604
@a_cup_of_java | Другие наши каналы
Новое в Java: JDK 26, Spring RC, Quarkus и др. OpenJDK выдвинул ряд JEP для JDK 26 (Structured Concurrency, Vector API, AOT с Any GC, защита final, примитивы в паттернах). Вышли RC Spring 7 и Spring Data, а также обновления Quarkus, Gradle, JReleaser, Seed4J и Jakarta EE 12.
Подробности: https://www.infoq.com/news/2025/11/java-news-roundup-oct27-2025/
#en
@a_cup_of_java | Другие наши каналы
Подробности: https://www.infoq.com/news/2025/11/java-news-roundup-oct27-2025/
#en
@a_cup_of_java | Другие наши каналы
Как подружить Hamcrest с POJO
При разработке автотестов нередко приходится сталкиваться проверками POJO, которые могут вернуться в ответах от API или быть сущностями в базе данных. Если вы также используете библиотеку Hamcrest, то наверняка сталкивались с проблемой, как лучше и оптимально использовать мэтчеры с POJO? Посмотрим, что предлагает Hamcrest из коробки, и познакомимся с тремя библиотеками, которые используют разные подходы.
Читать: https://habr.com/ru/articles/962990/?utm_campaign=962990
@a_cup_of_java | Другие наши каналы
При разработке автотестов нередко приходится сталкиваться проверками POJO, которые могут вернуться в ответах от API или быть сущностями в базе данных. Если вы также используете библиотеку Hamcrest, то наверняка сталкивались с проблемой, как лучше и оптимально использовать мэтчеры с POJO? Посмотрим, что предлагает Hamcrest из коробки, и познакомимся с тремя библиотеками, которые используют разные подходы.
Читать: https://habr.com/ru/articles/962990/?utm_campaign=962990
@a_cup_of_java | Другие наши каналы
Хобби айтишников — Андрей Фёдоров о паркуре, DnD и жизни в Люксембурге
Java-разработчик Андрей Фёдоров рассказывает, как паркур вылечил спину, D&D подарил друзей разных возрастов, а кулинария стала творческим экспериментом. Почему хобби — ключ к балансу в IT, как переезд вдохновил на новые увлечения и почему в маленьком королевстве так легко социализироваться через спорт и настолки.
Читать: «Хобби айтишников — Андрей Фёдоров о паркуре, DnD и жизни в Люксембурге»
@a_cup_of_java | Другие наши каналы
Java-разработчик Андрей Фёдоров рассказывает, как паркур вылечил спину, D&D подарил друзей разных возрастов, а кулинария стала творческим экспериментом. Почему хобби — ключ к балансу в IT, как переезд вдохновил на новые увлечения и почему в маленьком королевстве так легко социализироваться через спорт и настолки.
Читать: «Хобби айтишников — Андрей Фёдоров о паркуре, DnD и жизни в Люксембурге»
@a_cup_of_java | Другие наши каналы
💊1
Voices: быстрый локальный TTS для Java 17+
InfoQ: open-source проект Henry Coles (v0.0.8) позволяет генерировать речь локально без внешних API. Использует ONNX Runtime, поддерживает словари и OpenVoice, CPU/GPU-ускорение и примеры для Maven/Gradle. Подробнее на GitHub/InfoQ. Тренды в инфраструктуре и AI
Короткий обзор: 'ae' нацелилась на Terraform; Cloudflare объявила платформу с нулевыми egress‑сборами; Netflix рассказывает о повышении отказоустойчивости БД с WAL; AI‑агенты становятся движками исполнения; RAG на Spring Boot с MongoDB Atlas и OpenAI; стратегия обработки ошибок.
Подробности: https://www.infoq.com/news/2025/11/voices-text-to-speech/
#en
@a_cup_of_java | Другие наши каналы
InfoQ: open-source проект Henry Coles (v0.0.8) позволяет генерировать речь локально без внешних API. Использует ONNX Runtime, поддерживает словари и OpenVoice, CPU/GPU-ускорение и примеры для Maven/Gradle. Подробнее на GitHub/InfoQ. Тренды в инфраструктуре и AI
Короткий обзор: 'ae' нацелилась на Terraform; Cloudflare объявила платформу с нулевыми egress‑сборами; Netflix рассказывает о повышении отказоустойчивости БД с WAL; AI‑агенты становятся движками исполнения; RAG на Spring Boot с MongoDB Atlas и OpenAI; стратегия обработки ошибок.
Подробности: https://www.infoq.com/news/2025/11/voices-text-to-speech/
#en
@a_cup_of_java | Другие наши каналы