Spring5基础

基于Spring 5.2.6 版本。

Spring概念

Spring5基础_第1张图片

IOC容器

Spring5基础_第2张图片

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

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

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

Spring5基础_第3张图片

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

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

Spring5基础_第4张图片

Spring IOC容器相关实现类

Spring5基础_第5张图片

IOC进行Bean管理

概念

image.png
Spring5基础_第6张图片

基于xml方式进行bean管理

set方法注入属性

Spring5基础_第7张图片
Spring5基础_第8张图片

有参构造函数注入属性

image.png
Spring5基础_第9张图片

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

Spring5基础_第10张图片

xml注入其他类型属性

注入null值和xml的特殊符号

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

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

Spring5基础_第11张图片

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

Spring5基础_第12张图片

注入内部bean属性

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

Spring5基础_第13张图片
Spring5基础_第14张图片

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

Spring5基础_第15张图片

Spring5基础_第16张图片
Spring5基础_第17张图片
Spring5基础_第18张图片

xml注入集合属性

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

Spring5基础_第19张图片
Spring5基础_第20张图片
Spring5基础_第21张图片

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

Spring5基础_第22张图片

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

Spring5基础_第23张图片
Spring5基础_第24张图片

FactoryBean——工厂bean

Spring5基础_第25张图片

Spring5基础_第26张图片

bean的作用域

image.png
Spring5基础_第27张图片
Spring5基础_第28张图片

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

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

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

bean的生命周期——重要

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

Spring5基础_第29张图片
Spring5基础_第30张图片
Spring5基础_第31张图片

代码

Spring5基础_第32张图片
Spring5基础_第33张图片

xml自动装配

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

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

Spring5基础_第34张图片
Spring5基础_第35张图片

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

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

image.png
Spring5基础_第36张图片
Spring5基础_第37张图片
Spring5基础_第38张图片

基于注解方式进行bean管理

Spring5基础_第39张图片
Spring5基础_第40张图片
Spring5基础_第41张图片
Spring5基础_第42张图片

属性注入方式注解有3种

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

Spring5基础_第43张图片
Spring5基础_第44张图片
Spring5基础_第45张图片

Spring5基础_第46张图片

Spring5基础_第47张图片

AOP

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

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

AOP基本原理

Spring5基础_第48张图片
Spring5基础_第49张图片
Spring5基础_第50张图片

JDK动态代理

image.png
Spring5基础_第51张图片

代码示例

Spring5基础_第52张图片
Spring5基础_第53张图片
image.png
Spring5基础_第54张图片

AOP术语

Spring5基础_第55张图片
Spring5基础_第56张图片

AspectJ基本概念和准备

Spring5基础_第57张图片

切入点表达式(重点)

Spring5基础_第58张图片
image.png

基于注解实现AspectJ——重点

Spring5基础_第59张图片
Spring5基础_第60张图片
image.png
image.png
Spring5基础_第61张图片
Spring5基础_第62张图片
抽取共同切入点写法
image.png
Spring5基础_第63张图片
Spring5基础_第64张图片

基于XML配置文件实现AspectJ

Spring5基础_第65张图片

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

image.png
Spring5基础_第66张图片
Spring5基础_第67张图片

Spring5基础_第68张图片

Spring5基础_第69张图片

Spring5基础_第70张图片

查询某个值——count

Spring5基础_第71张图片
image.png

查询对象

Spring5基础_第72张图片

查询对象列表

Spring5基础_第73张图片

批量操作

Spring5基础_第74张图片
Spring5基础_第75张图片
Spring5基础_第76张图片

事务管理

Spring5基础_第77张图片

事务介绍

Spring5基础_第78张图片
Spring5基础_第79张图片

注解声明式事务管理

Spring5基础_第80张图片
Spring5基础_第81张图片

声明式事务参数配置

Spring5基础_第82张图片
Spring5基础_第83张图片
Spring5基础_第84张图片
Spring5基础_第85张图片
Spring5基础_第86张图片
Spring5基础_第87张图片

XML声明式事务管理

Spring5基础_第88张图片
Spring5基础_第89张图片
Spring5基础_第90张图片

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

Spring5基础_第91张图片
image.png

Spring5新特性

整合slf4j2日志框架

Spring5基础_第92张图片

1、引入依赖


    
      org.slf4j
      slf4j-api
      1.7.30
    
    
      org.apache.logging.log4j
      log4j-api
      2.11.2
    
    
      org.apache.logging.log4j
      log4j-core
      2.11.2
    
    
      org.apache.logging.log4j
      log4j-slf4j-impl
      2.11.2
    
  

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

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





    
    
        
        
            
            
    
    
    
    
    
        
            
        
    

Spring5基础_第93张图片

@Nullable注解

Spring5基础_第94张图片

Lambda表达式创建Spring容器对象

Spring5基础_第95张图片

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

Spring5基础_第96张图片
Spring5基础_第97张图片
Spring5基础_第98张图片

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

Spring5基础_第99张图片

SpringWebflux

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

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

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

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

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

image.png
Spring5基础_第100张图片
Spring5基础_第101张图片
Spring5基础_第102张图片
Spring5基础_第103张图片
Spring5基础_第104张图片
Spring5基础_第105张图片
Spring5基础_第106张图片
Spring5基础_第107张图片
image.png
Spring5基础_第108张图片
Spring5基础_第109张图片
Spring5基础_第110张图片

基于注解编程模型

Spring5基础_第111张图片
Spring5基础_第112张图片
Spring5基础_第113张图片
Spring5基础_第114张图片
Spring5基础_第115张图片
Spring5基础_第116张图片
Spring5基础_第117张图片
image.png

基于函数式编程模型

Spring5基础_第118张图片
Spring5基础_第119张图片
Spring5基础_第120张图片
Spring5基础_第121张图片
Spring5基础_第122张图片
image.png

Spring5重点掌握点总结

image.png
Spring5基础_第123张图片
Spring5基础_第124张图片

参考

尚硅谷Spring5框架

你可能感兴趣的:(Spring5基础)