Spring源码分析
Posted 三笠·阿卡曼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring源码分析相关的知识,希望对你有一定的参考价值。
Spring核心注解
注解 | 功能 |
---|---|
@Bean | 容器中注册组件 |
@Primary | 同类组件如果有多个,标注主组件 |
@DependsOn | 组件之间声明依赖关系 |
@Lazy | 组件懒加载(最后使用的时候才创建) |
@Scope | 声明组件的作用范围(SCOPE_PROTOTYPE,SCOPE_SINGLETON) |
@Configuration | 声明这是一个配置类,替换以前 |
@Component | @Controller、@Service、@Repository |
@Indexed | 加速注解,所有标注了@Indexed的组件,直接会启动快速加载 |
@Order | 数字越小优先级越高,越先工作 |
@ComponentScan | 包扫描 |
@Conditional | 条件注入 |
@Import | 导入第三方jar包中的组件,或定制批量导入组件逻辑 |
@ImportResource | 导入以前的xml配置文件,让其生效 |
@Profile | 基于多环境激活 |
@PropertySource | 外部properties配置文件和JavaBean进行绑定; |
@PropertySource | @PropertySource组合注解 |
@Autowired | 自动装配 |
@Qualifier | 精确指定 |
@Value | 取值 |
@Lookup | 单例组件依赖非单例组件,非单例组件获取需要使用方法 |
注:@Indexed需要引入依赖:spring-context-indexer
Spring架构原理图
核心组件接口分析
- 基础接口
- Resource+ResourceLoader
- BeanFactory
- BeanDefinition
- BeanDefinitionReader
- BeanDefinitionRegistry
- ApplicationContext
- Aware
- 生命周期-后置处理器
- BeanFactoryPostProcessor
- InitializingBean
- BeanPostProcessor
核心组件接口分析-Resource+ResourceLoader
Resource
ResourceLoader
万物皆资源,都可以加载
核心组件接口分析-BeanFactory
Bean工厂所有实现接口:
BeanFactory:
- HierarchicalBeanFactory:定义父子工厂(父子容器);
- ListableBeanFactory:实现是DefaultListableBeanFactory,保存了ioc容器中的核心信息;
- AutowireCapableBeanFactory:提供自动装配能力;
AnnotationConfigApplicationContext 组合了档案馆,它有自动装配能力;
ApplicationContext和BeanFactory有什么区别?
核心组件接口分析-BeanDefinition
Bean的定义信息保存的地方
核心组件接口分析-ApplicationContext
- ioc事件派发器;
- 国际化解析;
- bean工厂功能–自动装配组合进来的;
- 资源解析功能;
以上是关于Spring源码分析的主要内容,如果未能解决你的问题,请参考以下文章