gpt4 book ai didi

java - Spring中从 'composed Annotations'获取值

转载 作者:行者123 更新时间:2023-11-30 01:50:16 34 4
gpt4 key购买 nike

使用 Spring,您可以拥有某种组合注释。一个突出的例子是 @SpringBootApplication -注释,它是 @Configuration 的组合, @EnableAutoConfiguration@ComponentScan .

我试图获取受某个注释影响的所有 Bean,即 ComponentScan .

已关注 this回答,我正在使用以下代码:

for (T o : applicationContext.getBeansWithAnnotation(ComponentScan.class).values()) {
ComponentScan ann = (ComponentScan) o.getClass().getAnnotation(ComponentScan.class);
...
}

这不起作用,因为不是所有的bean都由getBeansWithAnnotation(ComponentScan.class)返回确实用该注释进行了注释,因为那些例如注释为 @SpringBootApplication (通常)不是。

现在我正在寻找某种通用方法来检索注释的值,即使它仅作为另一个注释的片段添加。我怎样才能做到这一点?

最佳答案

事实证明,有一个实用程序集AnnotatedElementUtils,它允许您处理这些合并注释

for (Object annotated : context.getBeansWithAnnotation(ComponentScan.class).values()) {
Class clazz = ClassUtils.getUserClass(annotated) // thank you jin!
ComponentScan mergedAnnotation = AnnotatedElementUtils.getMergedAnnotation(clazz, ComponentScan.class);
if (mergedAnnotation != null) { // For some reasons, this might still be null.
// TODO: useful stuff.
}
}

关于java - Spring中从 'composed Annotations'获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56327068/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com