一. IOC & DI 概述
二. 配置 bean
①. 配置形式:基于 XML 文件的方式;基于注解的方式
②. Bean 的配置方式:通过全类名(反射), 通过工厂方法(静态工厂方法 & 实例工厂方法), FactoryBean
③. IOC 容器 BeanFactory & ApplicationContext 概述
④. 依赖注入的方式:属性注入;构造器注入
⑤. 注入属性值细节
⑥. 自动转配
⑦. bean 之间的关系:继承;依赖
⑧. bean 的作用域:singleton;prototype;WEB 环境作用域
⑨. 使用外部属性文件
⑩. spEL
⑪. IOC 容器中 Bean 的生命周期
⑫. Spring 4.x 新特性:泛型依赖注入
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~~~~一. IOC & DI 概述
~~~~~~~~~~~~~~~~~分割线~~~~~~~~~~~~~~~~~~~~~~
二. 配置 bean
(1). bean配置形式:
①. 基于 XML 文件的方式
②. 基于注解的方式
(2). Bean 的配置方式
①. 通过全类名(反射)
②. 通过工厂方法(静态工厂方法 & 实例工厂方法)
③. FactoryBean
①. 在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例 化后, 才可以从 IOC 容器里获取 Bean 实例并使用.
②. Spring 提供了两种类型的 IOC 容器实现
Ⅰ. BeanFactory: IOC 容器的基本实现
Ⅱ. ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口
解释:BeanFactory是 Spring 框架的基础设施,面向 Spring 本身;
ApplicationContext 面向使用 Spring 框架的开发者,
几乎所有的应用场合都直接使用 ApplicationContext 而非底层的 BeanFactory,无论使用何种方式, 配置文件时相同的
(3) ApplicationContext 的主要实现类
①. ClassPathXmlApplicationContext:从 类路径下加载配置文件
②. FileSystemXmlApplicationContext: 从文件系统中加载配置文件
(4). 依赖注入的方式
Spring 支持3 种依赖注入的方式
①. 属性注入
②. 构造器注入
③. 工厂方法注入(很少使用,不推荐)
示例如下:
<!--
构造器注入如何区分重载的构造器?
使用构造器注入属性值可以指定参数的位置和参数的类型,来区分其重载的构造器。
-->
<bean id="phone" class="com.baidu.spring.beans.Phone">
<!-- 构造器注入 -->
<constructor-arg value="HuaWei" index="0"></constructor-arg>
<constructor-arg value="ShenZhen" index="1"></constructor-arg>
<constructor-arg value="4889" type="double"></constructor-arg>
</bean>
<bean id="phone2" class="com.baidu.spring.beans.Phone">
<!-- 构造器注入 -->
<constructor-arg value="Mi" type="java.lang.String"></constructor-arg>
<constructor-arg value="FoSan" type="java.lang.String"></constructor-arg>
<constructor-arg value="25000" type="int"></constructor-arg>
</bean>
(5). 注入属性值细节
a. 字面值
b.引用其它 Bean
c. 内部 Bean
d. 注入参数详解:null 值和级联属性
e. 集合属性
f. 使用 utility scheme 定义集合
g. 使用 p 命名空间
(6) . 自动转配
(7).bean 之间的关系:继承;依赖
(8). bean 的作用域:singleton;prototype;WEB 环境作用域
(9). 使用外部属性文件
(10). SpEL
(11). IOC 容器中 Bean 的生命周期
(12). Spring 4.x 新特性:泛型依赖注入