昨晚看到一条问题,大意是楼主希望可以动态得建立多个Spring 的定时任务。
这个题目我并不是很熟悉,不过根据题目描述和查阅相关 Spring 创建定时任务 的资料,发现这也许涉及到通过Java代码动态修改注解的属性值。
今天对此尝试了一番,发现通过反射来动态修改注解的属性值是可以做到的:
众所周知,java/lang/reflect
这个包下面都是Java的反射类和工具。
Annotation
注解,也是位于这个包里的。注解自从Java 5.0版本引入后,就成为了Java平台中非常重要的一部分,常见的如 @Override
、 @Deprecated
。
关于注解更详细的信息和使用方法,网上已经有很多资料,这里就不再赘述了。
一个注解通过 @Retention
指定其生命周期,本文所讨论的动态修改注解属性值,建立在 @Retention(RetentionPolicy.RUNTIM)
这种情况。毕竟这种注解才能在运行时(runtime
)通过反射机制进行操作。
那么现在我们定义一个 @Foo 注解,它有一个类型为 String 的 value 属性,该注解应用再Field上:
转载:krun - 通过反射,动态修改注解的某个属性值