从环境变量设置注释属性?

时间:2015-06-14 18:25:11

标签: spring groovy spring-boot

我试图从环境变量中设置注释值:

@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

是否可以通过这种方式设置注释,还是需要使用其他技术,例如在属性文件中设置值?

2 个答案:

答案 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() {
   ...
 }