我已经创建了Micronaut TypeConverter
(在Kotlin中),用于将地图转换为@Scheduled
的cron字符串,但是我无法让Micronaut进行转换。
作为示例,我要支持以下配置:
clean:
cron:
every: SUN
at: 01:00:00
应该导致0 0 1 * * SUN
的原因(或者类似的原因,我在使用这些cron字符串时总是会犯错误)。
因此,我在Kotlin中创建了一个实现此目的的类。 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]
,对于上述配置来说是正确的。
我在做什么错?感谢您的帮助。
答案 0 :(得分:0)
配置中的自定义语法背后的动机是什么? 如果您仅使用标准的CRON语法,Micronaut会完美地使用它:
clean:
cron: 0 0 1 * * SUN