注解会被编译到.class文件里面去,并且类的实例class.Class会保存注解相关的内容,所以我们用反射也可以拿到其注解的信息。比如:
// 判断@Report是否存在于Person类:Person.class.isAnnotationPresent(Report.class);
所以在注解的生效原理,其实就是实例化并解析这个类的时候,容器要检查这个实例化的类是否有注解,并且这个注解关联的是类的哪个成员对象,
然后运用aop切面技术或拦截器,定义切点PointCut到注解上,根据成员的属性值以及注解定义的值等,进行aop的环绕等逻辑处理。