Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中创建和使用注释_Java_Spring_Spring Boot_Spring Annotations - Fatal编程技术网

在java中创建和使用注释

在java中创建和使用注释,java,spring,spring-boot,spring-annotations,Java,Spring,Spring Boot,Spring Annotations,我正在回顾开源spring项目。我对这里注释的使用感到困惑。我想要求澄清这一点 @Target(ElementType.METHOD) @Retention(RUNTIME) @Bean public @interface Merge { @AliasFor("targetRef") String value() default ""; @AliasFor("value") String

我正在回顾开源spring项目。我对这里注释的使用感到困惑。我想要求澄清这一点

@Target(ElementType.METHOD)
@Retention(RUNTIME)
@Bean
public @interface Merge {

   
    @AliasFor("targetRef")
    String value() default "";
   
    @AliasFor("value")
    String targetRef() default "";

    Placement placement() default Placement.APPEND;
   
    int position() default 0;
    
    Class<MergeBeanStatusProvider> statusProvider() default MergeBeanStatusProvider.class;

    boolean early() default false;

}
@Target(ElementType.METHOD)
@保留(运行时)
@豆子
公共@接口合并{
@别名(“targetRef”)
字符串值()默认为“”;
@别名(“值”)
字符串targetRef()默认为“”;
Placement()默认Placement.APPEND;
int position()默认值为0;
Class statusProvider()默认的MergeBeanStatusProvider.Class;
布尔早()默认为false;
}
此处已创建一个名为“合并”的批注。它有不同的参数和默认值

@Configuration
public class LocalConfiguration {

    @Merge(targetRef = "mergedList", early = true)
    public List<String> blLocalMerge() {
        return Arrays.asList("local-config1", "local-config2");
    }
}
@配置
公共类本地配置{
@合并(targetRef=“mergedList”,early=true)
公共列表blLocalMerge(){
返回Arrays.asList(“local-config1”、“local-config2”);
}
}
这是在我随机选择的任何类中使用
@Merge
注释

当我检查代码时,我找不到任何与合并注释实现相关的类。顺便说一下,我遇到的问题不仅仅是这个注释。我所研究的几乎所有注释都是在没有以任何方式实现的情况下使用的。 如果我们从这个注释开始,我想我会理解其他注释。 这个涂鸦是干什么的?它给使用它的地方带来了什么样的信息。应用程序如何理解该注释在运行时的作用,而不在任何地方实现


谢谢。

注释没有实现。它们由外部类或工具处理,具体取决于。在这种情况下,合并注释具有运行时保留,因此一旦加载类,它将通过反射可用。在运行时,任何相关方(在本例中,我假设是Spring框架)都可以使用LocalConfiguration类来检测合并注释,并采取任何需要采取的行动。这种可能性实际上取决于定义注释的框架。很多Spring注入与注释类似,但它们也被许多其他框架使用,如Hibernate、Jersey等。其主要思想是注释充当特定代码点上的标记,供外部实体稍后使用。

谢谢@Simeon G。我明白你的意思,但仍然不清楚。我在注释中定义的参数,如
放置
位置
早期
,对spring框架有意义吗?。谁使用这些参数,在哪里以及如何使用,我找不到答案。您创建了合并注释吗?如果您这样做了,那么它很可能对spring框架没有直接意义,因为spring不会知道它。这不取决于其他框架。那么您将处理该注释。不过,LocalConfiguration类上的配置注释是由Spring处理的。Spring将忽略您的合并注释。当我查看这个开源项目时,我看不到
@Merge
注释和许多其他自定义注释正在以任何方式进行处理。事实上,我不知道什么东西不经过处理就行了。或者我不知道它是如何处理的。