Spring5基础

基于Spring 5.2.6 版本。

Spring概念

Spring5基础

IOC容器

Spring5基础

IOC底层原理的演进过程——本质就是为了高内聚,低耦合

在原始方式中,我们通过new创建对象来实现创建对象的逻辑,但是这样做当对象路径等发生变化时,就要修改代码,耦合度太高。

因此,我们引入了工厂模式来降低耦合,这样当我们的类发生变化要进行修改时,可以不改动调用类,而是去修改工厂类,这样就降低了耦合度。但是这样子耦合度就来到了工厂类身上。

Spring5基础

Spring在工厂类中以配置文件加反射的方式来进一步降低耦合度,当类发生变化时,我们只需要修改配置文件而不需要去修改代码,进一步降低了耦合度,这就是IOC的本质就是一个对象工厂。

即:IOC容器 = 工厂模式 + xml解析(注解)+ 反射

Spring5基础

Spring IOC容器相关实现类

Spring5基础

IOC进行Bean管理

概念

Spring5基础

Spring5基础

基于xml方式进行bean管理

set方法注入属性

Spring5基础

Spring5基础

有参构造函数注入属性

Spring5基础

Spring5基础

p名称空间注入——为了简化set方法注入的写法,不建议使用

Spring5基础

xml注入其他类型属性

注入null值和xml的特殊符号

字面量:指设置属性的固定值

]]> ,在mybatis的xml中的sql语句常用。

Spring5基础

注入外部bean属性——工作中最常用方式

Spring5基础

注入内部bean属性

如果一个bean要复用,写在外部,如果偶尔使用甚至是一次性的,用注入内部bean属性方式比较好。

Spring5基础

Spring5基础

级联赋值注入bean属性——建议还是用注入外部bean属性的方式

Spring5基础

Spring5基础

Spring5基础

Spring5基础

xml注入集合属性

在集合里面设置普通类型值

Spring5基础

Spring5基础

Spring5基础

在集合里面设置对象类型值

Spring5基础

提取集合作为公共部分用于注入复用

Spring5基础

Spring5基础

FactoryBean——工厂bean

Spring5基础

Spring5基础

bean的作用域

Spring5基础

Spring5基础

Spring5基础

还有其他作用域(一般不使用):

request:表示bean对象在一次请求中生效。

session:表示bean对象在一次会话中生效。

bean的生命周期——重要

生命周期时指从对象创建到对象销毁的过程。

Spring5基础

Spring5基础

Spring5基础

代码

Spring5基础

Spring5基础

xml自动装配

自动装配要求我们只要把bean实例创建出来,在bean配置上使用autowire属性值指定自动装配规则,Spring就会自动帮我们注入属性值。

手动装配就是我们自己在xml中配置property属性值。

Spring5基础

Spring5基础

xml读取外部属性文件——读取properties等配文件的配置

以配置德鲁伊数据库连接池为例。

Spring5基础

Spring5基础

Spring5基础

Spring5基础

基于注解方式进行bean管理

Spring5基础

Spring5基础

Spring5基础

Spring5基础

属性注入方式注解有3种

分别是@Autowired、@Qualifier、@Resource。

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

AOP

AOP基于动态代理实现,常见使用场景如:

  • 全局出入参日志的打印
  • 事务
  • 全局异常的捕获处理
  • 鉴权

AOP基本原理

Spring5基础

Spring5基础

Spring5基础

JDK动态代理

Spring5基础

Spring5基础

代码示例

Spring5基础

Spring5基础

Spring5基础

Spring5基础

AOP术语

Spring5基础

Spring5基础

AspectJ基本概念和准备

Spring5基础

切入点表达式(重点)

Spring5基础

Spring5基础

基于注解实现AspectJ——重点

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

抽取共同切入点写法

Spring5基础

Spring5基础

Spring5基础

基于XML配置文件实现AspectJ

Spring5基础

JDBCTemplate——相当于JDBC的封装版——了解

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

查询某个值——count

Spring5基础

Spring5基础

查询对象

Spring5基础

查询对象列表

Spring5基础

批量操作

Spring5基础

Spring5基础

Spring5基础

事务管理

Spring5基础

事务介绍

Spring5基础

Spring5基础

注解声明式事务管理

Spring5基础

Spring5基础

声明式事务参数配置

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

XML声明式事务管理

Spring5基础

Spring5基础

Spring5基础

完全注解声明式事务管理——即使用配置类替换XML配置

Spring5基础

Spring5基础

Spring5新特性

整合slf4j2日志框架

Spring5基础

1、引入依赖

<dependencies>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.11.2</version>
</dependency>
</dependencies>

2、创建配置文件——log4j2.xml

约定:配置名是固定的,放在项目resources根目录下,否则不会生效,只会走默认没有配置下的日志打印配置。

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,可以看到log4j2内部各种详细输出-->
<configuration status="DEBUG">
<!--先定义所有的appender-->
<appenders>
<!--输出日志信息到控制台-->
<console name="Console" target="SYSTEM_OUT">
<!--控制日志输出的格式-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</console>
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<!--root:用于指定项目的根日志,如果没有单独指定Logger,则会使用root作为默认的日志输出-->
<loggers>
<root level="DEBUG">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>

Spring5基础

@Nullable注解

Spring5基础

Lambda表达式创建Spring容器对象

Spring5基础

Spring5支持整合JUnit5——单元测试必备——重点

Spring5基础

Spring5基础

Spring5基础

重点使用@SpringJUnitConfig复合注解来进行单元测试

Spring5基础

SpringWebflux

核心是:基于reactor的响应式编程和基于java8的函数式编程

gateway基于webflux来实现,普通的服务基于springmvc实现,像网关这种需要处理更多的请求的场景用webflux来异步非阻塞处理请求更加方便,可以在有限的资源中处理更多的请求。

响应式编程类似于电子表格中的计算,就是观察者模式。

同步与异步,阻塞与非阻塞

拿等公交车举例:你在公交车站等公交车,你是调用者,你在等公交车时就是等着,不干其他的,就是同步,你在等车时顺便听听歌,看看新闻,就叫异步;而公交车在收到你等待它的消息时,公交车是被调用者,如果他马上回应你,等车到站了才告诉你我车到了,叫做阻塞,而如果公交车马上回应你,说我还有3分钟到站,就是非阻塞。

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

基于注解编程模型

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

基于函数式编程模型

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5基础

Spring5重点掌握点总结

Spring5基础

Spring5基础

Spring5基础

参考

尚硅谷Spring5框架

上一篇:使用Flask开发简单接口


下一篇:BZOJ 1874: [BeiJing2009 WinterCamp]取石子游戏 [Nim游戏 SG函数]