Разработки
Kora плагин¶
Kora Support — плагин для IntelliJ IDEA, разработанный dsudomoin. Он помогает прослеживать внедрение зависимостей и переходить между конфигурационными файлами и использующим их кодом. Поддерживает Java и Kotlin, включая режим K2 плагина Kotlin в IDE.
Навигация по внедрению зависимостей¶
Плагин добавляет значки на полях редактора рядом с параметрами внедрения и провайдерами. Они помогают ответить на вопросы «откуда берётся эта зависимость?» и «какие компоненты получают этот провайдер?».
| Расположение | Переход |
|---|---|
Параметр конструктора класса с @Component |
Подходящие классы-провайдеры или фабричные методы |
| Параметр фабричного метода в контексте модуля или приложения Kora | Провайдеры этого параметра |
Объявление @Component или @Repository |
Точки внедрения, использующие предоставляемый тип |
| Объявление фабричного метода | Точки внедрения, использующие его возвращаемый тип |
Например, для параметра конструктора OrderService(OrderRepository repository) нажмите значок на полях
рядом с repository, чтобы посмотреть подходящие провайдеры репозитория. Из объявления провайдера можно перейти обратно к потребителям через его значок.
Если найдено несколько целей, плагин предложит выбрать одну из них во всплывающем списке.
Поиск провайдеров учитывает фабричные методы в контекстах @KoraApp, @Module, @KoraSubmodule и @Generated,
а также унаследованные объявления модулей. При разрешении учитываются совместимость типов, аргументы обобщённых типов, @Tag, метааннотации с тегами
и @Tag.Any. Для All<T> и ValueOf<T> поиск выполняется по типу зависимости внутри обёртки.
Также распознаются отдельные провайдеры, создаваемые обработчиками аннотаций: для ConfigValueExtractor<T>, JsonReader<T> и JsonWriter<T>
плагин может перейти к аннотированному исходному типу без необходимости объявлять провайдер вручную.
Навигация по конфигурации¶
Навигация по конфигурации работает в обе стороны:
- От метода конфигурационного интерфейса или свойства Kotlin data-класса, связанного с
@ConfigSource, можно перейти к соответствующему ключу через значок на полях редактора. - От ключа YAML или HOCON действие Go to Declaration ведёт к типу или члену конфигурации либо к аннотации, использующей этот путь.
- От строкового значения поддерживаемой аннотации действие Go to Declaration ведёт к записи в конфигурации.
Стандартные сочетания Go to Declaration — Ctrl+B в Windows/Linux и Cmd+B в macOS.
Навигация работает в файлах проекта .yaml, .yml и .conf. Для поддержки .conf включите плагин HOCON в IDE.
Например:
Значок рядом с batchSize() может вести к orders.batch-size, а Go to Declaration на этом ключе YAML — обратно к методу Java.
Поддерживаются вложенные типы конфигурации, имена членов в camelCase/kebab-case и типы значений map с динамическими сегментами ключей.
Значения аннотаций и пути конфигурации¶
| Значение аннотации | Путь, который ищет плагин |
|---|---|
@Retry("name") |
resilient.retry.name |
@CircuitBreaker("name") |
resilient.circuitbreaker.name |
@Timeout("name") |
resilient.timeout.name |
@Fallback("name") |
resilient.fallback.name |
@Cacheable("name"), @CachePut("name"), @CacheInvalidate("name") |
cache.caffeine.name и cache.redis.name |
@HttpClient(configPath = "orders") |
httpClient.orders |
@KafkaListener("messaging.orders") |
messaging.orders, как указано в аннотации |
@ScheduleAtFixedRate(config = "scheduling.cleanup") |
scheduling.cleanup, как указано в аннотации |
@ScheduleWithFixedDelay, @ScheduleOnce, @ScheduleWithCron |
Путь из атрибута config, как указан в аннотации |
Для навигации по расписаниям используется полное значение config; префикс scheduling. автоматически не добавляется.
При переходе из конфигурации в код можно найти потребителей аннотации и по дочернему ключу внутри указанного ею пути.
Автодополнение YAML¶
При редактировании ключа YAML вызовите Basic Completion. Плагин предлагает сегменты путей конфигурации из
объявлений @ConfigSource и зарегистрированных префиксов аннотаций, например resilient, cache и httpClient.
В частично написанном пути он предлагает следующий распознаваемый сегмент.
Автодополнение путей доступно для YAML; поддержка HOCON предоставляет навигацию.
Инспекции¶
Инспекции плагина настраиваются в Settings / Preferences → Editor → Inspections → Kora Framework.
| Инспекция | По умолчанию | Поведение |
|---|---|---|
| Missing Kora DI provider | Включена; слабое предупреждение | Отмечает параметр внедрения, если IDE не нашла провайдер. Для All<T> допускается пустая коллекция, поэтому такие параметры пропускаются. |
| Unknown Kora config key | Выключена; слабое предупреждение | Отмечает ключи YAML, которые не распознаны через объявления конфигурации, соответствия аннотаций или известные префиксы фреймворка. |
Инспекция неизвестных ключей пропускает известные области фреймворка, например httpServer, database, logging и tracing.
Обработчики аннотаций проверяют граф приложения при компиляции.