Я создал Micronaut TypeConverter
(в Котлине) для преобразования карты в строку cron для @Scheduled
, но я не могу заставить Micronaut выполнять преобразования.
В качестве примера я хочу поддерживать следующий конфиг:
clean:
cron:
every: SUN
at: 01:00:00
Что должно привести к 0 0 1 * * SUN
(или что-то в этом роде, я продолжаю делать ошибки с этими строками cron).
Поэтому я создал класс в Котлине, который это реализует. Micronaut создает его экземпляр, но не применяет его для преобразования:
@Singleton
class MapToCron : TypeConverter<Map<String, String>, String>
Я пробовал разные типы (в том числе Any
и Map<*, *>
) безрезультатно.
Я также создал класс @PropertiesConfiguration, который определяет это свойство как строку (я полагаю, это необходимо, чтобы сообщить Micronaut, какого типа на самом деле является свойство), и внедрил его в bean-компонент, чтобы убедиться, что все используется (просто чтобы быть уверенным, что оно разницы не было).
@ConfigurationProperties("clean")
class CleanConfiguration {
var cron: String? = null
}
Это: @Scheduled(cron = "\${clean.cron}")
ведет к Could not resolve placeholder ${clean.cron}
.
Чтобы показать, что конфигурация принимается и все соединено вместе, @Scheduled(cron = "\${clean.cron.every}")
приводит к Invalid cron expression [SUN]
, что правильно с учетом приведенной выше конфигурации.
Что я делаю не так? Спасибо за помощь.