![](https://img-blog.csdnimg.cn/2021090220260334.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring源码
文章平均质量分 58
Spring、Spring MVC、Spring Boot源码解读
无我弘扬
这个作者很懒,什么都没留下…
展开
-
为什么说Spring框架只会将标注有@Component、@Named、@ManagedBean注解的类加入到容器? @Configuration、@Controller又为什么会加入到容器中?
Spring只会把标注有@Component、@Named、@ManagedBean注解的类加入到容器内,但是我们使用@Controller、@Service、@Repository注解也能加入到容器,这是怎么实现的?Spring注解配置启动的整个过程是这样的,首先Spring遍历所有文件夹获取到类文件,将类文件封装成Resource,使用MetadataReader对Resource进行读取,读取到类的注解等信息,然后再根据注解进行筛选,符合条件的封装成BeanDefinition。有了BeanDefi原创 2021-09-15 21:32:26 · 608 阅读 · 0 评论 -
手写Spring源码07 - 元数据读取器 MetadataReader 设计与实现(六)
MetadataReader定义与实现前面介绍了这么多,都是为了MetadataReader做铺垫,因为MetadataReader间接或直接使用了上面介绍的所有类元数据读取定义 - MetadataReaderpackage cn.zhanghongyang.core.type.classreader;import cn.zhanghongyang.core.io.Resource;import cn.zhanghongyang.core.type.AnnotationMetadata;im原创 2021-09-02 20:20:03 · 292 阅读 · 0 评论 -
手写Spring源码06 - 元数据读取器 MetadataReader 设计与实现(五)
注解类型映射的实现注解过滤器定义 - AnnotationFilter代码实现:package cn.zhanghongyang.core.annotation;import java.lang.annotation.Annotation;/** * @Author: zhanghongyang * @Description: 注解过滤器 */public interface AnnotationFilter { /** * 声明过滤器,包含两个包 */原创 2021-09-02 20:15:39 · 223 阅读 · 0 评论 -
手写Spring源码05 - 元数据读取器 MetadataReader 设计与实现(四)
合并注解定义和实现合并注解定义 - MergedAnnotation代码实现:package cn.zhanghongyang.core.annotation;import java.lang.annotation.Annotation;/** * @Author: zhanghongyang * @Description: 合并的注解 */public interface MergedAnnotation<A extends Annotation> { /**原创 2021-09-02 20:12:41 · 190 阅读 · 0 评论 -
手写Spring源码04 - 元数据读取器 MetadataReader 设计与实现(三)
类的读取和访问实现Spring使用了ASM框架对类进行读取,并且将ASM代码嵌在了Spring框架里。ASM是一个Java字节码操作和分析框架,可以对字节码进行读取,读到类的方法、注解、内部类、超类等等信息。这里直接加了ASM的依赖,这里就包括了ClassReader、ClassVisitor、AnnotationVisitor、MethodVisitor<!-- https://mvnrepository.com/artifact/org.ow2.asm/asm --><depe原创 2021-09-02 20:11:24 · 197 阅读 · 0 评论 -
手写Spring源码03 - 元数据读取器 MetadataReader 设计与实现(二)
详细设计元数据定义和实现被标注的元数据类型定义 - AnnotatedTypeMetadata被标注的元数据类型定义,定义了获取注解方法等代码实现package cn.zhanghongyang.core.type;import cn.zhanghongyang.core.annotation.MergedAnnotations;/** * @Author: zhanghongyang * @Description: 可被标注的元数据定义 * 从定义的方法和子类可以看出,这个接口子类原创 2021-09-02 20:09:08 · 265 阅读 · 0 评论 -
手写Spring源码02 - 元数据读取器 MetadataReader 设计与实现(一)
元数据读取器 - MetadataReader 设计与实现(一)功能介绍读取类的信息,如类名、修饰符、内部类、外部类、父类、接口名称、成员方法、注解、注解的元注解等代码演示注解@Zhy上打了注解@Zhy2,ZhyConcret类上打了@Zhy注解:@Zhypublic class ZhyConcret {}@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Zhy2public @interface Zhy {}原创 2021-09-02 20:05:19 · 502 阅读 · 0 评论 -
手写Spring源码01 - 资源加载器 ResourceLoader 设计与实现
static List<Method> getAttributeMethods(Class<? extends Annotation> annotationType) { List<Method> methods = attributeMethodsCache.get(annotationType); if (methods != null) { return methods; } methods = new ArrayList<Metho.原创 2021-08-03 21:06:57 · 228 阅读 · 0 评论