Java中的注解是如何内部工作的

3

我知道如何创建自定义注释,但不理解其内部工作原理。以Spring注释为例。

@PropertySource(value = { "classpath:database.properties" }). 

如果我们查看@PropertySource注释的内部细节

@Target({ java.lang.annotation.ElementType.TYPE })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(PropertySources.class)
public @interface PropertySource {
    public abstract String name();

    public abstract String[] value();

    public abstract boolean ignoreResourceNotFound();
}

我们这里没有提供加载属性文件的实现。那么它是如何从类路径加载属性文件的?背后是谁在工作?


如果您阅读创建自己的注释示例,可能会有所帮助,以了解它们在幕后是如何工作的。 - Matt Clark
6
注解本身并没有实际作用,只是为类、方法、字段等添加元数据。框架(这里指Spring)会在运行时使用反射查找类上的注解,并根据注解采取相应的行动。 - JB Nizet
感谢JB Nizet。 - sachin thakur
1个回答

2

非常简单:框架。也就是说,所有使用反射处理的“自定义”注释都由框架处理。编译器只会处理少量的注释,例如@Override@SuppressWarnings@Retention等。


1
这些是由编译器处理的,而不是JVM。据我所知,JVM不关心注解。 - Sean Patrick Floyd
@SeanPatrickFloyd,总的来说...我不知道。我不知道这些注释在哪个阶段被处理,但总之,我只是试图解释编译器处理注释的小范围。谢谢你纠正我。 - ZhenyaM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接