Java 默认情况下将批注配置为运行时保留(没有单独的@Retention)

Java 默认情况下将批注配置为运行时保留(没有单独的@Retention),java,annotations,Java,Annotations,是否可以进行一种配置,其中给定名称或类型的所有注释都是自动保留策略。运行时 我遇到了一个问题,我需要在运行时使用反射来搜索某些注释。但是这些都是散布在应用程序中的常见注释,例如@Service或@Transactional,我不能逐个添加@RetentionPolicy,这太长了。Java语言规范第节规定: 如果T没有对应于java.lang.annotation.Retention的(meta-)注释m,那么java编译器必须将T视为它确实有这样一个元注释m,其值为java.lang.anno

是否可以进行一种配置,其中给定名称或类型的所有注释都是自动
保留策略。运行时


我遇到了一个问题,我需要在运行时使用反射来搜索某些注释。但是这些都是散布在应用程序中的常见注释,例如
@Service
@Transactional
,我不能逐个添加
@RetentionPolicy
,这太长了。

Java语言规范第节规定:

如果T没有对应于
java.lang.annotation.Retention
的(meta-)注释
m
,那么java编译器必须将T视为它确实有这样一个元注释
m
,其值为
java.lang.annotation.RetentionPolicy.CLASS

如您所见,对于缺少的注释,严格要求与
@Retention(RetentionPolicy.CLASS)
相同

如果您需要
@Retention(RetentionPolicy.RUNTIME)
,则必须明确指定