注释在java中的内部工作方式
我知道如何创建自定义注释。但我无法理解它是如何在内部工作的。以弹簧注释为例
@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();
}
我们在这里没有提供任何用于加载属性文件的实现。 那么如何从类路径加载属性文件呢。谁在幕后工作
# 1 楼答案
非常简单:框架。就是这样。框架使用反射处理的所有“自定义”注释。编译器只处理小范围的注释,例如
@Override
、@SuppressWarnings
、@Retention
等等