扫描
2022-06-27 22:37:50 0 举报
Spring的扫描生成BeanDefinitino
作者其他创作
大纲/内容
如果不是顶级类,或者静态的内部内,则不通过
给BeanDefinition对象中属性赋默认值
调用AnnotationBeanNameGenerator生成beanName
利用ASM技术解析每个class文件对象,得到class元数据信息
都匹配成功后,根据当前类生成一个ScannedGenericBeanDefinition
得到包路径下的所有class文件对象,注意不是class对象,而是文件对象(可以理解为File对象)
判断当前beanName是否在Spring容器中已经存在,如果不存在则把beanName以及BeanDefinition注册到Spring容器中,如果存在则报错(此处有细节)
最终扫描到某些BeanDefinition
扫描结束
进一步进行条件注解@Conditional匹配筛选
解析@Lazy,@Primary,@DependsOn,@Role,@Description等注解并赋值给BeanDefinition对应属性
如果当前类的某个excludeFilter匹配,就排除这个类
包路径
如果是抽象类或者接口,则不通过
遍历每个BeanDefinition
如果是抽象类,有@Looup注解则通过
如果当前类和某个includeFilter匹配,那就通过这个类
0 条评论
下一页