我有一个自定义注释:
@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
annotation class Listener
像这样使用:
@Service
class MyService {
@Listener
fun onNewThing(thing: Thing) {
...
}
}
在另一个服务中,每当发生某些事情时,我想调用每个用@Listener
和Thing
类型参数注释的函数。如果不循环遍历上下文中的所有bean并检查所有方法,我该怎么做呢?
你可以使用java的org.reflections:
Set<Method> allMethods = new Reflections().getMethodsAnnotatedWith(yourAnnotation.class);
for (Method m : allMethods) {
if (m.isAnnotationPresent(yourAnnotation.class)) {
//YOUR LOGIC
}
}