乐趣区

Spring学习笔记

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. 使用注解


若方法中需要的不同

退出移动版