Spring
- 官网地址: https://spring.io
XML的解析方式
properties 配置文件 可以通过 Properties来解析
XML 可以通过 dom4j 或者 sax 进行解析
dom4j: 一次性将xml读取到内存,方便做数据的操作,不适用于过大的文件
采用 空间 换取 时间
sax : 边读便解析、适用于大文件的读取
采用 时间 换取 空间
dom4j 解析 XML
引入 dom4j 依赖
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
Spring核心技术
IoC (Inverse Object Control) 控制反转
DI(Dependency Injection) 依赖注入
AOP : 面向切面编程
i18N: 国际化
validation : 数据校验
data binding : 数据绑定
type conversion : 类型转换
SpEL : Spring表达式
Ioc 控制反转
将对象的管理 交给 Spring 框架
<bean id="" class="" />
常见的属性
- id : 用来设置 bean 的唯一值
- class : 用来设置 bean 对应的 类
- scope : 用来设置 bean 的作用范围,默认单例模式,如需多例,可以配置 prototype
- lazy-init : 是否采用懒加载管理对象,默认 false
- primary : 标记该对象是否是主要bean,解决容器中相同类型多个bean,根据类型获取报错问题
- abstract : 标记该类是否允许构建对象
- init-method :设置初始化方法
- name : 用来设置 bean的名字,可以设置多个,多个名字用 逗号 分割
DI 依赖注入
给Spring管理的对象 中的属性注入值
依赖注入的方式有
- 属性注入
- 构造注入
- 静态工厂注入
- 实例工厂注入
属性注入
<bean id="" class="" >
<property name="" .. />
</bean>
注入方式相对灵活,必须提供无参构造方法
不同类型的注入方式
- 字面量注入
- List集合
- Set集合
- 数组
- Map集合
- Properties
- null
- 特殊字符
构造注入
<bean id="" class="" >
<constructor-arg index="" .../>
</bean>
- index : 设置构造方法参数的顺序,从0开始
- name : 设置构造方法中的参数名
- type : 设置参数的类型
- value : 设置参数值
- ref : 设置参数值
构造注入需要通过有参构造完成对象的管理,注入的属性必须按照构造方法中提供的属性注入,灵活性不高
静态工厂注入
<bean id="" class="静态类" factory-method="静态方法" />
静态方法 要求不能有任何参数,且返回要管理的 目标对象
实例工厂注入
<bean id="xx" class="实例工厂类" />
<bean id="" factory-class="xx" factory-method="实例方法" />
实例方法 要求 和 静态方法 相同