spring源码学习--注解加载bean实例化

寵の児 提交于 2020-02-15 12:38:44

<context:component-scan base-package=“com.zoe.post,com.zoe.cust”/>
多个package的话,base-package之间用,隔开

@Service @Component 注释支持的前提是包扫描,通过扫描器扫描到有注解的类并封装成BeanDefinition对象
context_component-scan base-package解析流程

包扫描的主要逻辑方法:org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse、
1、扫描路径.class后缀的文件
2、判断类上面是否有注释
3、GenericBeanDefinition genericBeanDefinition = newGenericBeanDefinition();
genericBeanDefinition.setBeanClass(BeanClass.class);
4、完成BeanDefinition注册
ComponentScanBeanDefinitionParser.java
约定大于配置:很多配置都默认了,不需要过多改和配置。

use-default-filters:默认扫描过滤器,默认true,默认的扫描@Service @Component ,非默认的话,可以自定义注释.

默认扫描,会把Component加进去,没有添加Service,为什么会扫描到Service,原因是Service和Component有继承关系

在这里插入图片描述
在这里插入图片描述

ConfigurationClassPostProcessor类来完成@Configuration @Bean 注解的扫描
CommonAnnotationBeanPostProcessor类来完成@PostContruct @PreDestroy @Resource 注解的扫描
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!