Spring 是否从环境变量设置注释属性?
我正在尝试从环境变量设置注释值:Spring 是否从环境变量设置注释属性?,spring,groovy,spring-boot,Spring,Groovy,Spring Boot,我正在尝试从环境变量设置注释值: @Configuration @ComponentScan @EnableAutoConfiguration @EnableScheduling class Application { @Scheduled(cron = "${DB_CRON}") def void schedule() { ... } public static void main(String... args) { Sprin
@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”;但是找到了类型
中的“java.lang.Object”
@org.springframework.scheduling.annotation.Scheduled
可以这样设置注释吗,还是需要使用其他技术,例如在属性文件中设置值?在groovy的java注释中不能使用gstring。您必须使用“适当”字符串。例如
@Scheduled(cron = "#{systemEnvironment['ANDROID_HOME']}")
def void schedule() {
...
}
@Scheduled(cron = '${DB_CRON}')
请注意此处的单引号。如果groovy在
“
-带引号的字符串,它会将其转换为GString。这不能用java注释来完成,实际上您也不想在这里完成,因为您希望在这里设置spring属性。这也是错误消息在这里试图说的,这里使用的不是基类型字符串,而是某个对象(GString)。谢谢,您让我更接近了一步,但我现在收到了另一个错误:如果您将此问题标记为“已回答”,我将不胜感激这个答案的质量可以通过添加一些额外的解释来提高,解释为什么这个解决方案应该解决这个问题。这更接近于一个可行的解决方案,但我现在遇到了一个运行时错误:线程“main”中的异常groovy.lang.MissingMethodException:没有方法签名:static org.springframework.beans.factory.config.PropertyPlaceHolderConfigure.setSystemPropertiesMode()适用于参数类型:(java.lang.Integer)值:[2]可能的解决方案:setSystemPropertiesMode(int),setSystemPropertiesModeName(java.lang.String)
。注意:snowch$echo“$db_cron”
->0 19 21***
请编辑问题,提供完整的错误消息,其中包含代码中的跟踪和相关行号。还有其他一些代码引发了此错误。我已经删除了那个代码,现在一切都正常了。非常感谢!