1

我们有一个属性文件,我们在其中提到要从 JSON/Zookeeper 中获取属性。

例子:

AppName : SampleApp

在 SampleApp.properties 中,我们将指定

configmode=json
jsonfile=/config.json

有很多示例如何使用属性文件在 @Scheduled 注释中分配属性。

但在这种情况下,

我们必须使用一些 Java 类(比如 Name is Config)读取属性String cronExp=Config.get("CRONEXPRESSION") ; 并将该 cron 放入@Scheduled(cron = cronExp)..这可能吗?

请注意,我们不能将 CRONEXPRESSION 属性直接移动到属性文件中。在属性文件中我们提到了 json 。在我们读取该 json 并从那里选择属性的代码中。

4

1 回答 1

0

简短的回答:

可悲的是,你不能那样做。

在 Java 中,注解属性是在编译时解析的。这意味着您只能提供立即值或常量。

用例特定的答案:

Spring 让您在许多地方使用SpEL。在这种情况下,注解属性的值仍然在编译时解析,但这个值是由 Spring 在运行时评估的。@RC 提供了一个很好的链接来讨论细节

有点长的答案:

可以使用反射在运行时修改注解,但这是一条棘手的路径,处理注解的代码需要处理注解在运行时发生变化的情况(这种情况很少发生)。

于 2016-01-22T12:38:09.027 回答