Spring5

Spring5 学习历程

Spring5 概述

image


Spring5 初体验

Spring5 最基础的 jar 包

geekfx

Spring5 xml 配置

geekfx

在测试包下创建对象

image

输出效果

image


IOC 容器

image

image

IOC 底层原理

image

image

image

IOC 接口

image

image

image

Bean 管理

Bean 管理指的是两个操作:

  1. Spring 创建对象
  2. Spring 注入属性

基于 XML 方式

创建对象

image

创建对象时,默认也是执行空参构造器。

基于 XML 方式注入属性

DI:依赖注入,就是注入属性。

set 方法注入属性

image

有参构造器注入属性

image

p 名称空间注入(简化的 set 方法注入)

image

image

注入 null 或特殊符号

image

注入外部 bean

创建两个类,service 里调用 dao 的方法,且 service 里一个 dao 的成员属性。

image

注入内部 bean

创建两个类,同样是一个类的成员变量是另一个类。

image

级联注入

image

image

数组、集合注入

image

集合中存储自定义类

image

集合的复用

image

image

工厂 Bean

image

image

image

Bean 的作用域

在 Spring 中可以设置创建的 bean 实例是单实例还是多实例。

Spring中默认是单实例。

image

image

在 Spring 修改为多实例。

image

image

image

image

Bean 的生命周期

  1. 执行无参构造器创建 bean 实例
  2. 调用 set 方法设置属性值
  3. 执行初始化方法之前的方法(后置处理器)
  4. 执行初始化方法
  5. 执行初始化之后的方法(后置处理器)
  6. 获取到创建的 bean 实例
  7. 执行销毁方法

image

image

image

image

image

自动转配

根据指定装配规则(通过属性名或通过属性类型),Spring 将自动地将匹配的属性值进行注入。

image

image

image

引入外部配置文件

image

image

基于注解方式

注解是代码特殊标记,格式:@注解名称(属性名=属性值, 属性名=属性值, ...)

使用注解可以简化 xml 的配置。

Spring 针对 Bean 管理中创建对象提供的注解

  1. @Component
  2. @Service
  3. @Controller
  4. @Repository

上面 4 个注解功能是一样的,都可以用来创建 Bean 对象。

首先需要引入 AOP 的依赖。

image

image

image

image

组件扫描的详细配置

image

Bean 属性注入注解

  1. @AutoWired 根据类型注入
  2. @Qualifier 基于上面注解根据名称注入
  3. @Resource 可以根据类型也可以根据名称(Spring 不推荐使用,因为是 javax 包下的注解)
  4. @Value 注入普通类型

image

image

image

image

完全注解开发

创建一个类代替 Spring 的 xml 配置文件。

image

image


AOP

AOP 概述

image

image

AOP 底层原理

AOP 底层使用了动态代理,而动态代理有两种:

  1. 有接口的情况
  2. 无接口的情况

image

image

JDK 动态代理的实现

首先创建一个接口和一个实现类。

image

image

创建一个类实现 InvocationHandler 接口并且实现方法,在里面可以调用被代理类的方法,实现方法的增强。

image

image

运行输出。

image

AOP 术语

  1. 连接点
  2. 切入点
  3. 通知(增强)
  4. 切面

image

AOP 准备

image

引入依赖。

image

image

image

AOP 操作

基于注解方式

首先创建两个类,代理类和被代理类。

image

image

在 xml 配置文件中引入名称空间,开启注解扫描、开启 Aspect 生成代理对象。。

image

image

在代理类和被代理类上添加 Bean 注解,使其可以创建 Bean 对象。

在代理类上添加注解 @Aspect ,生成代理对象。

image

在增强类的方法上添加注解,使用通知类型注解,使用切入点表达式配置。

image

运行代码(不抛出异常):

image

image

运行代码(抛出异常):

image

image

将相同的切入点提取

创建一个方法,在方法上面添加注解 @Pointcut(value = "抽取出的切入点表达式)

image

多个增强类的优先级

对于一个被代理类,如果有多个增强类,可以定义增强类的执行顺序,使用 @Order(value = 数值) 数字越小优先权越高。

image

运行代码执行:

image

基于 XML 配置文件方式

image

image

完全注解开发

创建一个配置类,添加配置注解、开启注解扫描、开启 Aspect。

image

创建代理类、被代理类。

image

image

测试代码,运行结果:

image


JdbcTemplate

准备工作

引入相关的 JAR 包

image

配置数据库连接池:

image

配置 JdbcTemplate 对象,注入 DataSource:

image

开启组件扫描,使用注解的方式管理 Bean 对象:

image

创建 Service 类、Dao 类,在 Dao 注入 JdbcTemplate 对象:

image

image

JdbcTemplate 操作

创建一个数据表:

image

创建对应的 JavaBean:

image

在 BookDao 层里创建添加方法:

image

测试:

image

image

更新和删除

image

image

查询

查询返回某个值

image

测试:

image

查询返回实体类对象

image

image

查询返回 List 集合

image

image

批量添加

image

image

批量更新、删除

image

image

image

image

image


事务操作

image

image

Spring 提供的事务管理的一套 API:

image

声明式事务管理

基于注解

image

image

image

image

参数配置

Transactional 注解里面的参数:

image

propagation 传播行为

当多个事务方法之间调用,如何进行管理事务。

image

image

image

isolation 隔离级别

image

image

image

image

基于 XML 配置文件方式

image

完全注解开发

创建一个 TransactionConfig 的配置类:

image

测试:

image


Spring5 新特性

整个 Spring5 框架的代码基于 Java8,运行时兼容 JDK9,许多不建议使用的类和方法在代码库中删除。

Spring5 框架自带通用的日志封装

Spring5 已经移除 Log4jConfigListener,官方建议使用 Log4j2

引入 jar 包依赖

image

创建 log4j.xml

image

创建 Log4jTest 类

image

Nullable 注解

image

函数式注册对象

Spring5 核心容器支持函数式风格 GenericApplicationContext

image

Spring5 整合 JUnit4

引入 jar 包:

image

创建一个测试配置类,使用注解的方式:

image

Spring5 整合 JUnit5

引入 JUnit5 的依赖:

image

image

不一定每天 code well 但要每天 live well
原文地址:https://www.cnblogs.com/geekfx/p/13193398.html