Spring框架简介
Spring框架简介
本系列博客将讲述Spring Framework相关的概念和基本用法。
所使用的Spring Framework版本为5.2.x,内容主要来源于Spring官网、视频教程和一些博客。
根据Spring官网定义的核心技术点有:
IoC Container, Events, Resources, i18n, Validation, Data Binding, Type Conversion, SpEL, AOP
本系列博客重点在于IoC和AOP。
核心概念
IoC与DI
控制反转,即IoC(Inverse of Control),从字面上理解控制反转就是将对在自身对象中的一个内置对象的控制权反转。所谓的反转,即把内置对象的控制权(可简单理解为创建与销毁)反转给一个容器,而应用程序只需要提供对象的类型即可。这是一种解耦的设计思想,并不是什么具体的技术。
而IoC的具体实现技术通常有依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。[1]
在Spring中,IoC是由DI来实现的,于是有了官网这句话:IoC is also known as dependency injection (DI)[2]
Spring Bean
首先得理解一下什么是Bean。从查到一些资料来看,Bean就是符合一些约定的Java类(如属性用getXxx方法来访问)[3],通常它是由容器所创建(如Tomcat)的[4]。
那么Spring Bean就比较好理解了,就是由Spring容器创建和管理的Java类(A bean is an object that is instantiated, assembled, and otherwise managed by a Spring IoC container)。
上面是从概念上理解的,从代码上来看Spring Bean又是什么呢?
在Spring容器内,所有配置的bean都会被表示为BeanDefinition对象(这是一个接口),这个对象主要包含了以下信息[5]:
| 元信息 | 释义 |
|---|---|
| 类全限定名 | 定义的bean的实际实现类 |
| 行为配置 | 如scope, lifecycle callbacks |
| 引用 | 对其他bean依赖 |
| 其他信息 | 如连接池的大小之类 |
IoC容器简介
Spring的IoC容器主要职责是创建bean和为bean注入依赖。从代码上来看,org.springframework.beans和org.springframework.context两个包是Spring的IoC容器的基础。BeanFactory接口提供了一种高级配置机制,能够管理任何类型的对象。ApplicationContext是它的子接口,添加了新功能:
- 更易与Spring的AOP集成
- 消息资源的处理(例如使用国际化)
- 事件发布
- 提供应用层面特定的context,如
WebApplicationContext用于web应用。(通过继承)
ApplicationContext及其实现类是重量级资源,有如下特点:
- 占用内存大
- 单例
- 线程安全

浙公网安备 33010602011771号