我试图从环境变量中设置注释值:
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableScheduling
class Application {
@Scheduled(cron = "${DB_CRON}")
def void schedule() {
...
}
public static void main(String... args) {
SpringApplication.run(Application, args)
}
...
}
但是,我得到以下编译时错误:
属性' cron'应该有类型' java.lang.String&#39 ;;但找到了类型 ' java.lang.Object中'在 @ org.springframework.scheduling.annotation.Scheduled
是否可以通过这种方式设置注释,还是需要使用其他技术,例如在属性文件中设置值?
答案 0 :(得分:2)
你不能在groovy的java注释中使用GStrings。你必须使用“正确的”字符串。 E.g。
</resources>
请注意单引号。如果groovy在@Scheduled(cron = '${DB_CRON}')
引用的字符串中看到$
,则会将其转换为GString。这不能用java注释完成,你实际上不想在这里做,因为你想在这里设置你的spring属性。这也是,错误消息试图在这里说的,这里没有使用基类型字符串,而是一些对象(GString)。
答案 1 :(得分:0)
@Scheduled(cron = "#{systemEnvironment['ANDROID_HOME']}")
def void schedule() {
...
}