作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 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/
我是一名优秀的程序员,十分优秀!