- 博客(10)
- 收藏
- 关注
原创 为什么说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
682
原创 手写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
351
原创 手写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
286
原创 手写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
243
原创 手写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
268
原创 手写Spring源码03 - 元数据读取器 MetadataReader 设计与实现(二)
详细设计元数据定义和实现被标注的元数据类型定义 - AnnotatedTypeMetadata被标注的元数据类型定义,定义了获取注解方法等代码实现package cn.zhanghongyang.core.type;import cn.zhanghongyang.core.annotation.MergedAnnotations;/** * @Author: zhanghongyang * @Description: 可被标注的元数据定义 * 从定义的方法和子类可以看出,这个接口子类
2021-09-02 20:09:08
327
原创 手写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
577
原创 手写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
277
原创 Harbor安装教程
Harbor安装教程一、安装docker下载地址:https://download.docker.com/linux/static/stable/x86_64/docker-19.03.9.tgz1.1 解压二进制包tar zxvf docker-19.03.9.tgzmv docker/* /usr/bin1.2 systemd管理dockercat > /usr/lib/systemd/system/docker.service << EOF[Unit]
2021-05-26 22:37:55
5006
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人