【黑马程序员】SSM框架——Spring

文章目录


前言

跟着B站的黑马程序员学习SSM框架,语言为java,目前是第一个学习内容
课程传送门:SSM框架——Spring


一、Spring 的基本介绍

1.Spring 的课程介绍

1.1 为什么要学

在这里插入图片描述

1.2 学什么

  • 简化开发:IOC、AOP(事务处理)
  • 框架整合:MyBatis、MyBatis-plus、Struts、Struts2、Hibernate…

1.3 怎么学

  • 学习 Spring 框架设计思想
  • 学习基础操作,思考操作与思想间的联系
  • 学习案例,熟练应用操作的同时,体会思考
    在这里插入图片描述

2.初识 Spring

2.1 Spring 家族与 Spring

  • 官网:spring.io
  • Spring 发展到今天已经形成了一种开发的生态区,Spring 提高了若干个项目,每个项目用于完成特定的功能。
    在这里插入图片描述

2.2 Spring 发展史

在这里插入图片描述

3.Spring 系统架构

  • Spring Framework 是 Spring 生态圈最基础的项目,是其他项目的根据
    在这里插入图片描述

3.1 Spring 系统架构图

在这里插入图片描述

3.2 Spring 学习路线

在这里插入图片描述

二、核心容器

1.核心概念

1.1 Spring 核心基础概念

1.1.1 现状书写习惯
  • 代码书写现状:耦合度偏高
  • 解决方案:使用对象时,在程序中不要主动使用 new 产生对象,转换为由外部提供对象。
  • IoC(Inversion of Control)控制反转:对象的创建控制权由程序转移到外部,这种思想称为控制反转

在这里插入图片描述

1.1.2 IoC/DI、IoC容器、Bean
  • IoC(Inversion of Control)控制反转:
    ① 使用对象时,由主动 new 产生对象转换为由外部提供的现象,此过程中对象创建控制权与程序转移到了外部,此思想称为控制反转

  • Spring 技术对 IoC 思想进行了实现:
    ① Spring 提供了一个容器,称为 IoC 容器,用来充当 IoC 思想中的 “外部”
    ② IoC 容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在 IoC 容器中统称为 Bean

  • DI(Dependency Injection)依赖注入:
    ① 在容器中建立 bean 与 bean 之间的依赖关系的整个过程,称为依赖注入

在这里插入图片描述

1.1.3 总结
  • 目标:充分解耦
    ① 使用 IoC 容器管理 bean(IoC)
    ② 在 IoC 容器内将有依赖关系的 bean 进行关系绑定(DI)

  • 最终效果
    ① 使用对象时不仅可以直接从 IoC 容器中获取,并且获取到的 bean 已经绑定了所有的依赖关系。

1.2 入门案例

1.2.1 IoC 入门案例思路分析
  1. 管理什么?(Service 与 Dao)
  2. 如何被管理的对象告知 IoC 容器?(配置)
  3. 被管理的对象交给 IoC 容器,如何获取到 IoC 容器?(接口)
  4. IoC 容器得到后,如何从容器中获取 bean?(接口方法)
  5. 使用 Spring 导入哪些坐标?(pom.xml)
1.2.2 IoC 入门案例实现

① 导入 Spring 坐标
在这里插入图片描述
② 定义 Spring 管理的类(接口)
在这里插入图片描述
③ 创建 Spring 配置文件,配置对应类作为 Spring 管理的 bean
ps:bean 定义时 id 属性在同一个上下文中不能重复
在这里插入图片描述
④ 初始化 IoC 容器(Spring 核心容器/Spring 容器),通过容器获取 bean
在这里插入图片描述

1.2.3 DI 入门案例思路分析
  1. 基于 IoC 管理 bean
  2. Service 中使用 new 形式创建的 Dao 对象是否保留?(否)
  3. Service 中需要的 Dao 对象如何进入到 Service 中?(提供方法)
  4. Service 与 Dao 间的关系如何描述?(配置)
1.2.3 DI 入门案例实现

① 删除使用 new 的形式创建对象的代码
在这里插入图片描述
② 提供依赖对象对应的 setter 方法
在这里插入图片描述
③ 配置 service 与 dao 之间的关系
在这里插入图片描述

2.bean 相关配置

2.1 bean 基础配置

在这里插入图片描述

2.2 bean 别名配置

2.2.1 bean 别名配置概述

在这里插入图片描述
PS:
在这里插入图片描述

2.2.2 bean 别名配置案例

在这里插入图片描述

2.3 bean 作用范围配置

2.3.1 bean 作用范围配置概念

在这里插入图片描述

2.3.2 bean 作用范围配置案例

在这里插入图片描述

2.3.3 bean 作用范围说明
  • 为什么 bean 默认为单例?

  • 适合交给容器进行管理的 bean
    ① 表现层对象
    ② 业务层对象
    ③ 数据层对象
    ④ 工具对象

  • 不合适交给容器进行管理的 bean
    ① 封装实体的域对象

3.bean 的实例化

bean 本质上就是对象,创建 bean 使用构造方法完成。

3.1 构造方法(常用)

在这里插入图片描述

3.2 静态工厂(了解)

在这里插入图片描述

3.3 实例工厂与 FactoryBean

3.3.1 实例工厂(了解)

在这里插入图片描述

3.3.2 FactoryBean(实用)

在这里插入图片描述

4.bean 生命周期

  • 生命周期:从创建到消亡的完整过程
  • bean 生命周期:bean 从创建到销毁的整体过程
  • bean 生命周期控制:在 bean 创建后到销毁前做一些事情

  • 初始化容器
    1-创建对象(内存分配)
    2-执行构造方法
    3-执行属性注入(set操作)
    4-执行 bean 初始化方法

  • 使用bean
    1-执行业务操作

  • 关闭 / 销毁容器
    1- 执行 bean 销毁方法

4.1 bean 生命周期控制

  1. bean 生命周期配置
    配置:init-method、destroy-method
    接口(了解):InitializingBean、DisposableBean

  2. 关闭容器
    ConfigurableApplicationContext:close( )、registerShutdownHook( )

在这里插入图片描述

4.1.1 bean 生命周期控制——接口控制(了解)

在这里插入图片描述

4.1.2 bean 销毁时机

在这里插入图片描述

5.依赖注入方式

  • 思考:向一个类中传递数据的方式有几种?
    普通方法(set方法)
    构造方法

  • 思考:依赖注入描述了在容器中建立 bean 和 bean 之间依赖关系的过程,如果 bean 运行需要的是数字或字符串呢?
    引用类型
    简单类型(基本数据类型与 String)

  • 依赖注入方式
    1、setter 注入:简单类型、引用类型
    2、构造器注入:简单类型、引用类型

5.1 setter 注入

5.1.1 setter注入——引用类型

在这里插入图片描述

5.1.2 setter 注入——简单类型

在这里插入图片描述

5.2 构造器注入

5.2.1 构造器注入——引用类型(了解)

在这里插入图片描述

5.2.2 构造器注入——简单类型(了解)

在这里插入图片描述

5.2.3 构造器注入——参数适配(了解)

在这里插入图片描述

5.3 依赖注入方式选择

  1. 强制依赖使用构造器进行,使用 setter 注入有概率不进行注入导致 null 对象出现;
  2. 可选依赖使用 setter 注入进行,灵活性强;
  3. Spring 框架倡导使用构造器,第三方框架内部大多数采用构造器注入的形式进行数据初始化,相对严谨;
  4. 如果有必要可以两者同时使用,使用构造器注入完成强制依赖的注入,使用 setter 注入完成可选依赖的注入;
  5. 实际开发过程中,还要根据实际情况分析,如果受控对象没有提供 setter 方法就使用构造器注入;
  6. 自己开发的模块推荐使用 setter 注入

6. 依赖自动配置

  • IoC 容器根据 bean 所依赖的资源在容器中自动查找并注入到 bean 中的过程称为自动配置
  • 自动装配方式
    ① 按类型(常用)
    ② 按名称
    ③ 按构造方法
    ④ 不启动自动配置

在这里插入图片描述

6.1 依赖自动装配特征

  • 自动装配用于引用类型依赖注入,不能对简单类型进行操作;
  • 使用**按类型装配时(byType)**必须保障容器中相同类型的 bean 唯一,推荐使用;
  • 使用按名称装配时(byName)必须保障容器中具有指定名称的 bean,因变量名与配置耦合,不推荐使用;
  • 自动配置优先级低于 setter 注入和构造器注入,同时出现时自动装置配置失效;

7. 注入集合对象

7.1 数组

在这里插入图片描述

7.2 List

在这里插入图片描述

7.3 Set

在这里插入图片描述

7.4 Map

在这里插入图片描述

7.5 Properties

在这里插入图片描述

8. 加载 properties 文件

8.1 加载 properties 配置文件信息

在这里插入图片描述

8.2 开启命名空间方式

在这里插入图片描述

9. 容器

9.1 创建容器

在这里插入图片描述

9.2 获取 bean(3种)

在这里插入图片描述

9.3 容器类层次结构

在这里插入图片描述

9.4 BeanFactory

在这里插入图片描述

10 核心容器总结

10.1 容器相关

在这里插入图片描述

10.2 bean 相关

在这里插入图片描述

10.3 依赖注入相关

在这里插入图片描述

三、注解开发

1. 注解开发

1.定义 bean

  • @Component
    1-@Controller
    2-@Service
    3-@Repository
  • < context:component-scan>

2.纯注解开发

  • @Configuration
  • @ComponentScan
  • AnnotationConfigApplicationContext

1.1 注解开发定义 bean

在这里插入图片描述
在这里插入图片描述

1.2 纯注解开发

在这里插入图片描述
在这里插入图片描述

2. bean 管理

2.1 bean 作用范围

在这里插入图片描述

2.2 bean 生命周期

在这里插入图片描述

3. 依赖注入

3.1 自动装配

3.1.1 Autowired

在这里插入图片描述

3.1.2 @Qualifier

在这里插入图片描述

3.1.3 @Value

在这里插入图片描述

3.2 读取 properties 文件

3.2.1 @PropertySource

在这里插入图片描述

4. 第三方 bean 管理

4.1 第三方 bean 管理

使用 @Bean 配置第三方 bean

在这里插入图片描述

使用依赖的配置类管理第三方 bean

在这里插入图片描述

将独立的配置类加入核心配置

在这里插入图片描述
在这里插入图片描述

4.2 第三方 bean 依赖注入

简单类型:成员变量

在这里插入图片描述

引用类型:方法形参

在这里插入图片描述

5. XML 配置比对注解配置

在这里插入图片描述

四、Spring 整合 MyBatis

1. Spring 整合 MyBatis 思路分析

1.1 MyBatis 程序核心对象分析

在这里插入图片描述

1.2 整合 MyBatis

在这里插入图片描述

2. Spring 整合 MyBatis

2.1 整合 MyBatis 的具体步骤

2.1.1 先添加 MyBatis 的坐标

在这里插入图片描述

2.1.2 Spring 正常开发

在这里插入图片描述

2.1.3 正常添加数据源

在这里插入图片描述

2.1.4 添加配置类

在这里插入图片描述

2.2 整合 MyBatis

2.2.1 SqlSessionFactoryBean

在这里插入图片描述

2.2.2 MapperScannerConfigurer

在这里插入图片描述

3. 整合 Junit

3.1 整合 Junit 的具体步骤

3.1.1 添加所需的坐标

在这里插入图片描述

3.1.2 使用两个固定的注解

在这里插入图片描述

3.2 @Run with、@ContextConfiguration

在这里插入图片描述

五、AOP

1. AOP 简介

1.1 AOP 概念

  • AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构
    OOP(Object Oriented Programming)面向对象编程
  • 作用:在不惊动原始设计的基础上为其进行功能增强
  • Spring 理念:无入侵式 / 无侵入式

1.2 AOP 作用

在这里插入图片描述

1.3 AOP 核心概念

  • 连接点(JoinPoint):程序执行过程中的任意位置,粒度为执行方法、抛出异常、设置变量等
    1---- 在 SpringAOP 中,理解为方法的执行

  • 切入点(Pointcut):匹配连接点的式子
    1---- 在 SpringAOP 中,一个切入点可以只描述一个具体方法,也可以匹配多个方法
    ①---- 一个具体方法:com.itheima.dao 包下的 BookDao 接口中的无形参无返回值的 save 方法
    ②---- 匹配多个方法:所有的 save 方法,所有的 get 开头的方法,所有以 Dao 结尾的接口中的任意方法,所有带有一个参数的方法

  • 通知(Advice):在切入点处执行的操作,也就是共性功能
    1---- 在 SpringAOP 中,功能最终以方法的形式呈现

  • 通知类:定义通知的类

  • 切面(Aspect):描述通知与切入点的对应关系

2. AOP入门案例

2.1 入门案例思路分析

案例设定:测试接口执行效率
简化开发:在接口执行前输出当前系统时间
开发模式:XML or 注解
思路分析:
1.导入坐标(pom.xml)
在这里插入图片描述
2.制作连接点(原始操作,Dao接口与实现类)
在这里插入图片描述
3.制作共性功能(通过类与通知)
4.定义切入点
5.绑定切入点与通知关系(切面)
在这里插入图片描述

2.2 入门案例实现

① 导入 aop 相关坐标

在这里插入图片描述

② 定义 dao 接口与实现类

在这里插入图片描述

③ 定义通知类,制作通知

在这里插入图片描述

④ 定义切入点

在这里插入图片描述

⑤ 绑定切入点与通知关系,并指定通知添加到原始连接点的具体执行位置

在这里插入图片描述

⑥ 定义通知类受 Spring 容器管理,并定义当前类为切面类

在这里插入图片描述

⑦ 开启 Spring 对 AOP 注解驱动支持

在这里插入图片描述

3. AOP 工作流程

3.1 AOP 工作流程

在这里插入图片描述

3.2 AOP 核心概念

  • 目标对象(Target):原始功能去掉共性功能对应的类产生的对象,这种对象是无法直接完成最终工作的。
  • 代理(Proxy):目标对象无法直接完成工作,需要对其进行功能回填,通过原始对象的代理对象实现。

4. AOP 切入点表达式

  • 切入点:要进行增强的方法
  • 切入点表达式:要进行增强的方法的描述方式

在这里插入图片描述

4.1 语法格式

  • 切入点表达式标准格式:动作关键字(访问修饰符 返回值 包名.类 / 接口名.方法名(参数)异常名)
    在这里插入图片描述

4.2 通配符

  • 可以使用通配符描述切入点,快速描述
    在这里插入图片描述

4.3 书写技巧

在这里插入图片描述

5. AOP 通知类型

在这里插入图片描述

5.1 前置通知

在这里插入图片描述

5.2 后置通知

在这里插入图片描述

5.3 环绕通知(重点)

在这里插入图片描述

5.3.1 @Around 注意事项

在这里插入图片描述

5.4 返回后通知(了解)

在这里插入图片描述

5.5 抛出异常后通知(了解)

在这里插入图片描述

6. 案例:业务层接口执行效率

在这里插入图片描述

6.1 案例执行步骤

在这里插入图片描述

7. AOP 通知获取数据

在这里插入图片描述

7.1 获取参数数据

在这里插入图片描述

7.2 获取返回值数据

在这里插入图片描述

7.3 获取异常数据(了解)

在这里插入图片描述

8. 案例:百度网盘密码数据兼容处理

在这里插入图片描述

8.1 案例执行步骤

在这里插入图片描述

9. AOP 总结

9.1 概念

AOP(Aspect Oriented Programming)面向切面编程,一种编程范式

9.2 作用

在不惊动原始设计的基础上进行功能增强

9.3 核心概念

在这里插入图片描述

9.4 切入点

在这里插入图片描述

9.5 通知类别

在这里插入图片描述

9.6 通知获取数据

在这里插入图片描述

六、Spring 事务

6.1 Spring 事务简介

  • 事务作用:在数据层保障一系列的数据库操作同成功同失败
  • Spring 事务作用:在数据层或业务层保障一系列的数据库操作同成功同失败
    在这里插入图片描述

案例:银行账户转账

在这里插入图片描述

① 在业务层接口上添加 Spring 事务管理

在这里插入图片描述
在这里插入图片描述

② 设置事务管理器

在这里插入图片描述
在这里插入图片描述

③ 开启注解式事务驱动

在这里插入图片描述

6.2 Spring 事务角色

在这里插入图片描述

  • 事务管理员:发起事务方,在 Spring 中通常指代业务层开启事务的方法
  • 事务协调员:加入事务方,在 Spring 中通常指代数据层方法,也可以是业务层方法

6.3 事务相关配置

6.3.1 事务配置

在这里插入图片描述

6.3.2 案例:转账业务追加日志

在这里插入图片描述
在这里插入图片描述

6.3.3 事务传播行为

在这里插入图片描述


总结

以上就是本章要讲的内容,本文仅仅简单复述了老师讲课的文本内容,内容有误麻烦联系。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴能回答你关于黑马程序员SSM框架笔记的问题!SSM框架是指Spring + SpringMVC + MyBatis的组合,它们分别是Java开发中常用的三个主流框架。下面是一些关于SSM框架的基本笔记: 1. Spring框架Spring是一个轻量级的JavaEE开发框架,它提供了很多功能,包括依赖注入、面向切面编程、事务管理等。使用Spring可以简化开发过程,提高代码的可维护性和可测试性。 2. SpringMVC框架SpringMVC是Spring框架的一部分,它是一个基于MVC(Model-View-Controller)模式的Web框架SpringMVC提供了很多特性,如请求映射、数据绑定、视图解析等,使得开发Web应用更加简单和灵活。 3. MyBatis框架:MyBatis是一个持久层框架,它提供了对数据库的访问和操作。MyBatis使用简单的XML或注解来配置SQL语句,并提供了很多数据库操作的方法,使得开发数据访问层更加方便。 4. SSM整合配置:在使用SSM框架时,需要将SpringSpringMVC和MyBatis进行整合。一般来说,可以通过Spring的配置文件将它们整合在一起,配置数据源、事务管理、扫描包等。 5. 常用注解:在SSM框架中,有很多常用的注解可以使用。例如,@Controller用于标识一个控制器类,@RequestMapping用于映射请求路径和处理方法等。 以上是一些关于黑马程序员SSM框架的基本笔记,希望能对你有所帮助!如果你有任何其他问题,欢迎继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值