Spring笔记(spring 概括以及 IOC)
1 Spring 框架概括
Spring 是一个开源框架,本来是为了解决企业应用开发复杂性而构建的,但现在已经不止用于企业应用了,它是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
为什么是容器框架呢?
Spring 包含并管理应用对象的配置和生命周期,在这个意义上讲,它是一个容器,同时它又支持将简单的组件配置组合成复杂的应用,从这个层面上讲,它是一个框架。
下图是来自 Spring 官网的关于 Spring 的介绍:
- 底层是单元测试
-
Core Container
:表示的是它的核心容器,其中包括:- Bean 容器
- Context 上下文
- Core 核心的包与工具
- SpEL Spring的表达式
- 在前者之上构成了 Spring 的功能组件
- 最上层就是 Spring 的具体使用
2 控制反转(IoC)
控制反转的实质就是:控制权的转移,即 应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护。 IOC 的整个目的就是:创建对象并且组装对象之间的关系,即 IOC 容器在初始化的时候会创建一系列的对象,同时它能把对象的依赖关系通过 DI(依赖注入) 的方式组织起来(所谓的依赖注入就是 IOC 容器在运行期间,动态地将某种依赖关系注入到对象之中)。
2.1 bean 容器的初始化
bean 容器的初始化基础来源自两个包:org.springframework.beans
以及 org.spring.context
。
-
org.springframework.beans
包主要是BeanFactory
这个类及其子类,这个类提供配置结构和基本功能,加载并初始化Bean
; -
org.spring.context
包主要是ApplicationContext
以及他的实现类,它的主要作用是保存了Bean
的对象,并在 Spring 中广泛使用,即起类似于容器的作用。
初始化 ApplicationContext 容器有三种形式:
-
new FileSystemXMLApplicationContext(path)
:本地文件,此时需要提供完整路径,,如F://workplace
-
new ClassPathXMLApplicationContext(path)
:相对路径,如:classpath:spring-ico.xml
-
new webXMLApplicationContext
:web应用
2.2 Spring 的注入
Spring 的注入是指 启动 IOC 容器加载 bean 配置,完成对变量的赋值行为,常用的注入方式有两种:
- 设值注入:对应的属性变量必须要有
setter
方法,spring 赋值的时候会自动地调用setter
方法,当使用 XML 配置方式时,使用<property>
,通过赋值它的name
以及ref
属性来实现 bean 赋值,其中name
属性要与赋值的属性变量名一致 - 构造注入:使用构造函数参数注入,其中当使用 XML 配置方式时与设值注入类似,构造函数中的参数名字与
<construct-arg>
标签中的name
属性必须相同