1.spring 介绍
spring 并不局限于某一层.
spring 是对象的容器, 帮我们 ” 管理 ” 项目中的所有对象
2.spring 搭建
1. 导包(idea 直接新建 Spring 项目,一般的都有,除了依赖)
2. 准备类
3. 书写配置(src/applicationContext.xml)
4. 书写代码测试
3.spring 中的概念
ioc: 反转控制. 创建对象的方式反转了. 从我们自己创建对象, 反转给 spring(程序)来创建.
di: 依赖注入. 将必须的属性注入到对象当中. 是实现 ioc 思想必须条件.
applicationContext&BeanFactory
BeanFactory 接口
spring 原始接口. 针对原始接口的实现类功能较为单一
BeanFactory 接口实现类的容器. 特点是每次在获得对象时才会创建对象
ApplicationContext
每次容器启动时就会创建容器中配置的所有对象. 并提供更多功能
丛类路径下加载配置文件:ClassPathXmlApplicationContext
从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")
结论:web 开发中, 使用 applicationContext. 在资源匮乏的环境可以使用 BeanFactory.
4. 配置文件详解
bean 元素
Bean 元素进阶
scope 属性
singleton(默认值): 单例对象. 被标识为单例的对象在 spring 容器中只会存在一个实例
prototype: 多例原型. 被标识为多例的对象, 每次再获得才会创建. 每次创建都是新的对象. 整合 struts2 时,ActionBean 必须配置为多例的.
request:web 环境下. 对象与 request 生命周期一致.
session:web 环境下, 对象与 session 生命周期一致.
生命周期属性
配置一个方法作为生命周期初始化方法.spring 会在对象创建之后立即调用.
init-method
配置一个方法作为生命周期的销毁方法.spring 容器在关闭并销毁所有容器中的对象之前调用.
destory-method
spring 创建对象的方式
1. 空参构造方式
2. 静态工厂 (了解)
分模块开发
<import />
5.spring 属性注入
注入方式
set 方法
构造方法
p 名称空间
spEL 表达式
复杂属性注入
Array
List
Map
Properties
6. 注解代替 xml 配置
步骤
导包
1. 添加约束
2. 开启使用注解代理配置文件
3. 在类中使用注解完成配置
将对象注册到容器
指定对象的作用范围
值类型注入
1. 直接赋值
通过反射的 Field 赋值, 破坏了封装性
2.set 方法赋值(推荐)
引用类型注入
自动
手动
初始化 | 销毁方法
7.spring 与 junit 整合测试
1. 导包
2. 配置注解
3. 测试
8.spring 中的 aop
aop 思想介绍
spring 中的 aop 概念
spring 实现 aop 的原理
动态代理(优先)
被代理对象必须要实现接口, 才能产生代理对象. 如果没有接口将不能使用动态代理技术
cglib 代理(没有接口)
第三方代理技术,cglib 代理. 可以对任何类生成代理. 代理的原理是对目标对象进行继承代理. 如果目标对象被 final 修饰. 那么该类无法被 cglib 代理.
aop 名词学习
9.spring 中的 aop 演示
步骤(xml 配置)
1. 导包
2. 准备目标对象
3. 准备通知
4. 配置进行织入, 将通知织入目标对象中
步骤 (注解配置)
导包
2. 准备目标对象
3. 准备通知
4. 配置进行织入, 将通知织入目标对象中
10.spring 整合 JDBC
spring 提供了很多模板整合 Dao 技术
spring 中提供了一个可以操作数据库的对象. 对象封装了 jdbc 技术
JDBCTemplate => JDBC 模板对象
与 DBUtils 中的 QueryRunner 非常相似
步骤
导包
准备数据库
书写 Dao
增删改
查询单个对象
查询值类型
查询 list 集合类型
spring 配置
依赖关系
进阶内容
JDBCDaoSupport
读取外部的 Properties 配置
注意前缀
11.spring 中 aop 事务
事务
事务特性:acid
事务并发问题
脏读
不可重复读
幻读
事务的隔离级别
1 读未提交
2 读已提交
3 可重复读
4 串行化
spring 封装了事务管理代码
事务操作
打开事务
提交事务
回滚事务
事务操作对象
因为在不同平台, 操作事务的代码各不相同.spring 提供了一个接口
PlatformTransactionManager 接口
DataSourceTransactionManager
HibernateTransitionmanager
注意: 在 spring 中玩事务管理. 最为核心的对象就是 TransactionManager 对象
spring 管理事务的属性介绍
事务的隔离级别
1 读未提交
2 读已提交
3 可重复读
4 串行化
是否只读
true 只读
false 可操作
事务的传播行为
spring 管理事务方式
编码式
1. 将核心事务管理器配置到 spring 容器
2. 配置 TransactionTemplate 模板
3. 将事务模板注入 Service
4. 在 Service 中调用模板
xml 配置(aop)
1. 导包
2. 导入新的约束(tx)
3. 配置通知
4. 配置将通知织入对象
注解配置(aop)
1. 导包
2. 导入新的约束(tx)
3. 开启注解管理事务
4. 使用注解
若方法中需要的不同