如何解决在注释参数/参数中使用@ConfigurationProperties? 必须是编译时常量
我正在尝试在注释中使用配置,如下所示:
@ConfigurationProperties("scheduling")
interface SchedulingConfiguration {
val initialDelay: String
val fixedDelay: String
}
@Singleton
class Worker(
private val configuration: SchedulingConfiguration,) {
private val log = LoggerFactory.getLogger(javaClass)
@Scheduled(initialDelay = configuration.initialDelay,fixedDelay = configuration.fixedDelay)
fun fetchQueueEntry() {
log.info("Fetching entry")
}
}
我收到警告 An annotation argument must be a compile-time constant
。
有什么方法可以让 Micronaut 做到这一点吗?
解决方法
我通过浏览 Micronaut 文档并偶然发现属性占位符来设法让它运行。即使感觉不是“最佳”,这也能正常工作。
@Singleton
class Worker {
private val log = LoggerFactory.getLogger(javaClass)
@Scheduled(
initialDelay = "\${scheduling.initialDelay}",fixedDelay = "\${scheduling.fixedDelay}"
)
fun fetchQueueEntry() {
log.info("Fetching entry")
}
}
如果配置文件或环境变量中不存在键,也可以定义将使用的默认值:
@Scheduled(
initialDelay = "\${scheduling.initialDelay:0s}",fixedDelay = "\${scheduling.fixedDelay:10s}"
)
如果使用的属性占位符没有默认值和配置,将在运行时抛出异常,应用程序将关闭。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。