java
-
Два слова о Camel
Spring boot велик и могуч, но есть и другие инструменты.

Camel позволяет абстрагироваться от кода и сосредоточиться на конфигурации, взаимодействии компонент. Camel это интеграционный клей, который соединяет компоненты системы, предоставляя коннекторы. Примеры коннекторов: rest, ftp, Spring bean и еще много всяких: https://camel.apache.org/components/next/index.html#_components.
-
Динамическое создание Spring Bean в RunTime
Создания бинов с параметрами из базы данных и создания массива бинов и передачей этого массива как зависимость в другой бин.
Различные способы задания конфигурации Spring Beans (Java)
Различные способы задания конфигурации Spring Beans (Kotlin)
В задаче опроса филиалов в проекте МТС -
Заготовка для UI проектов со Spring Boot Web и FreeMarker (HR Admin)
Заготовка для UI проектов со Spring Boot Web и FreeMarker
Оглавление:
-
Загрузка файла с Java, Spring Boot, Themleaf. Frontend и Backend.
Используется Java 11, Spring Boot, Themeleaf, Bootstrap.
Ссылка на репозиторий: FileUploadExample -
Именование commit
Взято из https://www.conventionalcommits.org/en/v1.0.0/
Коротко:<type>[optional scope]: <description> [optional body] [optional footer(s)]
-
Интеграционное тестирование с JUnit
Предупреждение: я знаю, что JUnit для UNIT тестов и цена им небольшая. Речь о применении JUnit в ИНТЕГРАЦИОННЫХ тестах. И с другой стороны, на тех проектах, где мне приходилось работать, интеграционное тестирование проводилось вручную. Можно это дело автоматизировать.
-
Конвертирование речи в текст
Результаты поиска инструментов перевода речи в текст
Решения только для ввода текста в поля редактирования текста. Не подойдет для эмуляции нажатия кнопок, combobox и т.д., хотя как то и можно приспособить, но в этой заметке не про это.Оглавление:
- Vosk
- Статья на Baeldung "How to Convert WAV or MP3 to Text in Linux"
- Wisper
- В Android есть встроенный распознаватель речи в клавиатуре.
- Встроенные в браузер средства на JavaScript (Web Speech API).
- Статья на Habr "Rhasspy — опенсорсный и полностью офлайновый речевой тулкит. Распознавание русского языка. Никаких утечек в облако."
- Ссылки
-
Конспект Otus про использование Camel
Конспект демо-занятия курса "Java Developer. Advanced. Apache Camel: масштабируемые интеграции для Highload" Сергей Проханов
Демо-занятие курса «Java Developer. Advanced» Сергей Проханов
0:10:00
Книга "Шаблоны интеграции корпоративных приложений" Грегор Хоп, Бобби Вульф
0:24:00
50 форматов данных
Camel K - Camel для Kubernetes (K)
CRD - Custom, Resource, Deployment. Деплоит в кубер как Pod/Deployment
0:32:00
Camel Quarkus - расширение Camel для Quarkus. Quarkus - генерит исполняемые файлы (быстрый старт, горячая перезагрузка, контейнеризация). Примеры: camel-quarkus-kafka, camel-quarkus-rest, camel-quarkus-jdbc, camel-quarkus-http, camel-quarkus-mail и т.д.
0:35:31
Camel Kafka Connector - встраивает Camel _внутрь_ Kafka _Connect_. Тут же использование с Kafka _Stream_.
источник - source
приемник - sink
Дает возможность не писать код на Java/Kotlin/Scala/Go
Обрабатывает исключения!
0:39:28
Camel Spring Boot. Примеры:
camel-kafka-starter
camel-rest-starter
camel-jdbc-starter
camel-postgresql-starter
camel-mail-starter
camel-openapi-java-starter
0:41:39
Camel Karaf (OSGi)
0:43:30
Camel Karavan - это изуальный иструмент (UI + IDE) - позволяет создавать, редактировать, запускать и деплоить интеграционные _МАРШРУТЫ_ Camel без глубокого программирования, а через граф.интерфейс. low-code ???
0:46:20
Apache Camel JBang - инструмент позволяет начать работу без установки Maven, Gradle, IDE и др. тяжелых runtime. "Простыми словами это Jbang+Camel в одном флаконе - запускаешь команду, пишешь интеграцию в одном файле (Java, Kotlin, Groovy, YAML) и она сразу работает как полноценое Camel приложение. Прототипирование, временное решение, для обучения.
0:48:52
Практическая часть Camel-Spring Boot предоставляет автоконфигурацию CamelContext. берет на себя регистрацию Producer Template в качестве бинов Spring
BOM Spring Boot - согласовывает версии Spring Boot. Есть 2 BOM:
1) camel-spring-boot-bom - требует ручного разрешения конфликтов
2) camel-spring-boot-dependencies - минимизирует риск конфликтов
0:53:13
Пример конфигурации. В ней 2 зависимости в dependencyManagement:
artifactId -> camel-spring-boot-bom
type -> pom
scope -> import
и как обычно dependencies:
artifactId -> spring-boot-dependencies
type -> pom
scope -> import
0:56:26
Добавление стартеров и запуск контекста
Приложение стартует добавлением основного стартера, а его функциональность _РАСШИРЯЕТСЯ_
подключением _СТАРТЕРОВ_ компонентов.
В standalone-режиме (без web сервера) необходимо указать параметр camel.main.run-controller=true, чтобы главный поток не завершался сразу после старта.
0:58:11
Добавление стартеров и запуск контекста
starter - не нужно указывать версии, т.к. они определены в BOM Spring boot (?)<dependencies> <!-- Camel Starter --> <dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-spring-boot-starter</artifactId> // запуск Camel контекста (вспомни как ебался с xml) </dependency> <!-- Camel Starter JMS --> <dependency> <groupId>org.apache.camel.springboot</groupId> <artifactId>camel-jms-starter</artifactId> </dependency> </dependencies>
1:00:34
В application.properties добавить:
camel.main.run-controller=true
есть разница для web приложений. Эта настройка КРИТИЧЕСКИ важна для spring-boot приложения
Работа в фоне. Не останавливается после старта). В обычных boot приложениях не останавливает
приложение tomcat или jetty, а тут не дает выгрузиться Camel.
1:05
Единый стиль конфигурации через своства Spring boot
Синтаксис следует единому шаблону:
camel.component.[component-name].[parameter]=[value]
Пример в application.properties:
camel.component.paho-mqtt5.broker-url=tcp://localhost:61616
(MQTT - Протокол Message Queuing Telemetry Transport. Это протокол обмена сообщениями по шаблону издатель-подписчик (pub/sub))
(paho-mqtt5 - библиотека для взаимодействия с MQTT-сервером)
1:06:59
Объявление маршрутов для Spring Boot:
1. Декларативный подход (идеально)
@Component public class NameClass extends RouteBuilder { @Override public void configure() { from("...") .to("..."); } }
2. Практика
1.11
Задача пересылки сообщений из очередей RabbitMQ в топики Kafka.
В проекте как-то использован kafka-drop (в application.yaml)
Использован Docker Compose
1:1.35
Объясняет суть проекта
Шикарная лекция
1. Темп речи
2. Умение рассказывать. Связная речь.
3. Последовательность (от общего описания к частностям)
4. Яркий пример
Где исходники? Где-то есть исходники примеров. Обещал дать. -
Многомодульный проект
Описан способ организации разработки, когда один из модулей (library) используется в нескольких проектах (application1, application2,... applicationN). Чаще, и возможно проще, переиспольуемый модуль разрабатывается отдельно и затем подключается как зависимость через репозиторий maven. При изменении library его maven версия получает новый идентификатор и это изменение должно быть учтено в целевых проектах. Заготовка проекта: https://github.com/cherepakhin/multi-module.
В проекте два модуля Application и Library. -
О CompletableFeature
Интересно было узнать о возможностях CompletableFeature.
Проект и описание находится тут https://github.com/cherepakhin/completablefeature_many_benchmark -
Области памяти - Stack, Heap
Stack – Каждый поток имеет свой стек, который создается в тоже время, когда создается поток. Стек (локальная или рабочая память потока) содержит фреймы, которые создаются при каждом вызове метода и хранят локальные переменные и промежуточные результаты, возвращают значения для методов и выбрасывают исключения, если это необходимо. Задается параметром Xss (default 1Mb, примеры: -Xss1m, -Xss1024k).
-
Определение Spring beans
Проект для демонстрации на Kotlin https://github.com/cherepakhin/spring_config_k
Аналогичный проект на Java https://github.com/cherepakhin/spring_config -
Очень простые базы данных с хранением данных на диске.
MapDB
Проект заброшен, но рабочий.
DB db = DBMaker.fileDB("file.db").make()https://www.baeldung.com/mapdb
https://github.com/jankotek/mapdb/
mapdb-manual-20.pdf -
По мотивам hr-admin
По мотивам
hr-admin
https://github.com/cherepakhin/hr_admin

Заготовка для UI проектов со Spring Boot Web
Java 17
Основная цель ТОЛЬКО FRONTEND.- В качестве template использован Freemarker с помощью библиотеки spring-boot-starter-freemarker
- Простой CRUD. База данных H2.
- Использован Tailwind CSS Framework(TailwindCSS) - CSS-фреймворк для оформления интерфейсов.
- При тестировании использован AssertJ
- Тесты в BDD стиле с Mockito (смотри файл EmployeeControllerTest.java)
- DataJpaTest в (смотри файл EmployeeRepositoryDataJpaTest.java)
- Использован GigaChat
Развернуто тут: https://v.perm.ru/hr_admin/ (запустить ~/temp/hr_admin.sh)
spring-boot-mdl
-
Покрытие тестами 100%
Задача: довести покрытие тестами до 100%. Зачем? А почему бы и нет?

-
Пример Spring MVC с Spring Boot Security и данными пользователей в базе данных MySQL
Использована Java 17, база данных MySql, имя базы login_system.
GitHub: https://github.com/cherepakhin/registration-login-springboot-security-thymeleaf
-
Пример использования Spring MVC
Ссылка на репозиторий: https://github.com/cherepakhin/hr_admin
Работающее приложение можно посмотреть по ссылке:https://v.perm.ru/hr_admin/ -
Пример на Kotlin для конвертирования JSON массива в список объектов.
Пример на Kotlin для конвертирования JSON массива в список объектов. Дан сервис:
-
Пример небольшого магазина на Java, SpringBoot сгенерированного OpenCode
Сделано с помощью OpenCode (ниже см. промпты).
Аккуратный css UI.
Развернуто https://v.perm.ru/shop/
Shop Application with AI OpenCode
A Spring Boot shop application with products and product categories.
-
Пример работы с базой данных и списками в java
Страница 3 из 4