I'm working on a Spring-Boot written with Kotlin project that uses a custom annotation foo
that has a String property called biz
throughout the project.
@Foo(biz = "buzz")
Is there a way with Spring-Boot or Kotlin to get a list of all the values used in the biz
property of foo
?
CodePudding user response:
There is function on ListableBeanFactory
, which can retrieve all beans with given annotation and return map with beans - key is bean name and value bean instance. Kotlin example:
@Configuration
class AnnotatedBeansCounterConfig(
context: AbstractApplicationContext
) {
init {
context.getBeansWithAnnotation(Foo::class.java).forEach { beanName, bean ->
val annotation = bean::class.findAnnotation<Foo>()
}
}
}```
CodePudding user response:
You can get all the spring beans from the context. Follow this tutorial:
https://www.baeldung.com/spring-show-all-beans
Then you can use reflection to get the annotation arguments for each bean. There's an example here: