spring aop 注解 scan类扫描加载过程(7)

电脑杂谈  发布时间:2018-02-01 22:07:38  来源:网络整理

这个方法里先循环excludeFilters,再循环includeFilters,excludeFilters默认情况下没有啥内容,includeFilters默认情况下最少会有一个new AnnotationTypeFilter(Component.class);

也就是默认情况下excludeFilters排除内容不会循环,includeFilters包含内容最少会匹配到AnnotationTypeFilter,调用AnnotationTypeFilter.match方法是其父类AbstractTypeHierarchyTraversingFilter.math()方法,其内部调用matchSelf()调回子类的AnnotationTypeFilter.matchSelf()方法。该方法中用||连接两个判定分别是hasAnnotation、hasMetaAnnotation,前者判定注解名称本身是否匹配因此Component肯定能匹配上,后者会判定注解的meta注解是否包含,Service、Controller、Repository注解都注解了Component因此它们会在后者匹配上。这样match就肯定成立了。

此时类还没有被装载,Resource中仅仅是类的目录信息,Spring也没有通过ClassLoader将类加载后通过反射读取类的Annotation信息(这条路也是通的),而是通过自己的asm对类的class字节码的解析来完成的,这部分是字节码相关的知识,在我的书中和其它博客有所介绍。spring aop 注解spring我想这样做的目的是方便自己做AOP相关的字节码增强一带搞定,也不会多加载不需要的类,因为本文提到的访问如果写了目录,可以访问到jar包中的内容,可能类信息会比较多。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-64433-7.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...