Spring Boot - 使用自定义注释获取所有方法

问题描述 投票:0回答:1

我有一个自定义注释:

@Target(AnnotationTarget.FUNCTION)
@Retention(AnnotationRetention.RUNTIME)
@MustBeDocumented
annotation class Listener

像这样使用:

@Service
class MyService {

   @Listener
   fun onNewThing(thing: Thing) {
       ...
   }
}

在另一个服务中,每当发生某些事情时,我想调用每个用@ListenerThing类型参数注释的函数。如果不循环遍历上下文中的所有bean并检查所有方法,我该怎么做呢?

spring spring-boot reflection annotations kotlin
1个回答
0
投票

你可以使用java的org.reflections:

Set<Method> allMethods = new Reflections().getMethodsAnnotatedWith(yourAnnotation.class);

for (Method m : allMethods) {
    if (m.isAnnotationPresent(yourAnnotation.class)) {
    //YOUR LOGIC
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.