标签:返回 spring 扫描 兼容 bean 是否 注解 class BeanDefinition
bean 的扫描过程- 首先是通过ResourcePatternResolver获取指定路径下的所有.class文件,利用AMS技术来解析所有得到的class文件对象,得到class元数据信息;
- 判断扫描的class文件对象,是否和某个excludefilter条件注解匹配,匹配成功以后会根据当前类生成一个ScannedGenericBeanDefinition;
- 判断这个类是否是独立的、接口、抽象的,类上面是否有Lookup注解,符合上面的条件,就将这个类作为BeanDefinition返回;
- 解析获取到的所有的BeanDefinition,获取到对应的@Scope注解的数据,再将这个值放入到对应的BeanDefinition类中;
- 获取到对应BeanDefinition的名字(首先判断这个BeanDefinition的@Component是否指定了一个名字,有则直接返回,如果@Component注解没有指定名字,那么直接生成一个默认的beanName);
- 给BeanDefinition设置一些默认值,解析@Lazy等注解的值,存入到BeanDefinition中;
- checkCandidate:判断当前的BeanDefinition是否存在于Bean容器中,存在返回false,不存在返回true;
- 如果Bean容器中存在了这个BeanDefinition,就会进入isCompatible()方法;
- 首先判断是否兼容,是通过两个BeanDefinition的ReSource是否相同来进行判断是否兼容,兼容返回true,不兼容返回false;
- 返回false则注册BeanDefinition ,返回true,不注册 ;
标签:返回,spring,扫描,兼容,bean,是否,注解,class,BeanDefinition 来源: https://www.cnblogs.com/zhaozhitong/p/16544386.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。