Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 是否从环境变量设置注释属性?_Spring_Groovy_Spring Boot - Fatal编程技术网

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***
请编辑问题,提供完整的错误消息,其中包含代码中的跟踪和相关行号。还有其他一些代码引发了此错误。我已经删除了那个代码,现在一切都正常了。非常感谢!