java - 如何从条件中获取带注释的类

标签 java spring

我已经实现了一个条件,用于检查匹配中提供的AnnotatedTypeMetadata是否是AnnotationMetadataReadingVisitor的实例,并且然后检查 cron.[className.makePretty()] 是否在配置中设置。这让我可以做这样的事情:

@Condition(TaskConditional.class)
public class DoImportantStuffTask {
  @Scheduled(cron = "${cron.do-important-stuff}")
  public void run() {
  ...

并且仅当在配置中设置“cron.do-important-stuff”时才实例化。该条件还检查 cron.enabled 是否为 true,以及 cron.host 是否已设置且等于当前主机名。

Spring 5.2 的文档指出:

As of Spring Framework 5.2, this class has been replaced by SimpleAnnotationMetadataReadingVisitor for internal use within the framework, but there is no public replacement for AnnotationMetadataReadingVisitor

有没有办法在 Spring 5.2 的条件匹配方法中仍然获取带注释的类 (DoImportantStuffTask.class) 的名称?

最佳答案

您现在可以使用 AnnotatedTypeMetadata 中的 getAnnotations() 获取注释的来源。因此为了获得我所做的类名

String annotatedClasss = md.getAnnotations().stream()
    .map(a -> a.getSource().toString())
    .distinct()
    .findAny();

关于java - 如何从条件中获取带注释的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59628787/

相关文章:

java - 错误: org. hibernate.PropertyNotFoundException : no appropriate constructor in class: com. a.offering.dto.SellerDetailsDto

java - 如何获取 indexOf 多个分隔符?

java - 组织.json.JSONException : A JSONArray text must start with '['

java - 使用 Spring 在 JSP 中显示图像

java - Camel路线是如何手动启动的?

java - 不满意的依赖异常 : Error creating bean(by BeanNotOfRequiredTypeException)

java - 渲染上的 jsp/spring-mvc 异常 - 如何获取自定义错误页面并记录异常

java - 为什么每次调用 toOncreate 后我的计数器都会重置?

java - 从java套接字读取行终止符不一致的行

java - 映射 list<Entity> hibernate 的 Map 集合