Java 春季问题:具有@CustomAnnotation的铁路超高列表属性

Java 春季问题:具有@CustomAnnotation的铁路超高列表属性,java,spring,spring-boot,annotations,Java,Spring,Spring Boot,Annotations,当项目开始时,我们的想法是搜索所有带有@AppProperty注释asign的de变量 在测试中,我无法得到列表,而且我总是得到一个空列表。我正在使用ApplicationContext中的getBeansWithAnnotation()函数。我的理论是,在执行搜索时,它们还没有被加载,但我不能确认这是真的 这是项目的开始,在提升项目后,我使用@EventListener运行该项目 在这里调用ApplicationPropertyService,我尝试获取包含@AppProperty注释的所有

当项目开始时,我们的想法是搜索所有带有@AppProperty注释asign的de变量

在测试中,我无法得到列表,而且我总是得到一个空列表。我正在使用ApplicationContext中的getBeansWithAnnotation()函数。我的理论是,在执行搜索时,它们还没有被加载,但我不能确认这是真的

这是项目的开始,在提升项目后,我使用@EventListener运行该项目

在这里调用ApplicationPropertyService,我尝试获取包含@AppProperty注释的所有属性的列表

这是我想要呈现给我的两个属性

公共接口应用程序属性{
@AppProperty(key=“version”,value=“1.0.0”,active=true)
公共字符串APP_VERSION=“VERSION”;
@AppProperty(key=“checkVersion”,value=“true”,active=true)
公共字符串APP\u CHECK\u VERSION=“checkVersion”;

}
我认为您的代码中有几个问题

首先,正如您在
getBeansWithAnnotation
方法中所看到的,它将只检测级别的注释:

查找其类具有提供的注释类型的所有bean,返回具有相应bean实例的bean名称映射

但是,您正试图将它们应用到一个类中,在该类中,只有字段被注释,并且注释已定义且仅适用于字段级别-根据
@Target(ElementType.field)
-注释

您应该创建一个适合应用于类型的新注释,
@Target(ElementType.type)
,并应用Spring需要用这个新注释标识的类

此外,在您的示例中,这个类,
ApplicationProperties
,应该用允许Spring找到它的东西进行注释。例如,您可以使用
@Component
@Service
,等等,或者您可以定义…)或将
应用程序属性
定义为应用程序上下文中某个地方的
@Bean
getBeansWithAnnotation
仅提供有关SpringBean的信息


最后,Spring基于
PropertySource
抽象和相关内容提供了一个功能丰富的基于属性的配置系统。请查看,这是关于这个主题的大量信息。

@Rodrigonzalezarias您能尝试任何建议的方法吗?