一. 环境搭建
-
导入jar包
- spring-core-x.x.x.RELEASE.jar
- spring-context-x.x.x.RELEASE.jar
- spring-beans-x.x.x.RELEASE.jar
- spring-expression-x.x.x.RELEASE.jar
- commons-logging-x.x.x.jar
-
创建applicationContext.xml配置文件
- 导入约束
- 添加bean
-
创建IOC容器,并容器中获取bean
二. IOC容器和AOP
IOC和DI
IOC(Inversion of Control):其思想是反转资源获取的方向. 传统的资源查找方式要求组件向容器发起请求查找1资源. 作为回应, 容器适时的返回资源. 而应用了 IOC 之后, 则是容器主动地将资源推送给它所管理的组件, 组件所要做的仅是选择一种合适的方式来接受资源. 这种行为也被称为查找的被动形式
DI(Dependency Injection) — IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如: setter 方法)接受来自如容器的资源注入. 相对于 IOC 而言,这种表述更直接
Spring容器
- 在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用.
- Spring 提供了两种类型的 IOC 容器实现.
- BeanFactory:面向框架本身的.是IOC容器的基础设施.BeanFactory 是 Spring 框架的基础设施,面向 Spring 框架本身;ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合都直接使用 ApplicationContext 而非底层的 BeanFactory
- ApplicationContext:面向开发者.提供了更多的高级特性. 是 BeanFactory 的子接口.
ClasspathXmlApplicationContext.
三. 依赖注入
-
set方式注入:提供成员变量对应的set方法.
-
构造器注入:提供对应的构造器.
-
注入的细节
- 可以使用value/ref属性的方式注入,也可以使用/子标签的方式注入
- 如果遇到特殊字符的注入:
a 使用转移字符/实体,可以参考手册.
b 使用<![CDATA[...]]>的方式****
-
List/Map类型的注入
- List/Set/Array:
- Map
- List/Set/Array:
-
内部bean:定义到一个bean的内部的bean。内部bean只能在内部使用.
四. 自动装配
- 自动装配引用类型的属性.
- 使用autowire属性来指定装配的方式
- 自动装配的方式
1. byName:通过要装配的属性的名字与 IOC容器中bean的id值进行匹配
2. byType:通过要装配的属性的类型与 IOC容器中bean的class值进行匹配,如果匹配到多个兼容的类型,会有异常.
五. bean之间的关系
- 继承
- 依赖: 依赖就是指定关系,并不会赋值。
六. bean的作用域
- ingleton: 单例(默认值),在IOC容器中,只有一个该bean的实例对象.并且该bean的对象会在IOC容器初始化的时候创建
- prototype: 原型,在IOC容器中,有多个该bean的实例对象.不会在IOC容器初始化的时候创建,而是在每次getBean的时候才会创建一个新的对象返回.
- request:一次请求期间
- session:一次会话期间.
七. 引入外部的配置文件
db.properties:
八. Bean的生命周期
- 调用构造器创建对象
- 给对象的属性设置值
- 调用init方法进行初始化
- 使用对象
- 调用destroy方法进行对象的销毁.
九. bean的配置方式
- 全类名(反射)的方式