• Spring5基础


    基于Spring 5.2.6 版本。

    Spring概念

    image.png

    IOC容器

    image.png

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

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

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

    image.png

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

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

    image.png

    Spring IOC容器相关实现类

    image.png

    IOC进行Bean管理

    概念

    image.png
    image.png

    基于xml方式进行bean管理

    set方法注入属性

    image.png
    image.png

    有参构造函数注入属性

    image.png
    image.png

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

    image.png

    xml注入其他类型属性

    注入null值和xml的特殊符号

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

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

    image.png

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

    image.png

    注入内部bean属性

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

    image.png
    image.png

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

    image.png

    image.png
    image.png
    image.png

    xml注入集合属性

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

    image.png
    image.png
    image.png

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

    image.png

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

    image.png
    image.png

    FactoryBean——工厂bean

    image.png

    image.png

    bean的作用域

    image.png
    image.png
    image.png

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

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

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

    bean的生命周期——重要

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

    image.png
    image.png
    image.png

    代码

    image.png
    image.png

    xml自动装配

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

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

    image.png
    image.png

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

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

    image.png
    image.png
    image.png
    image.png

    基于注解方式进行bean管理

    image.png
    image.png
    image.png
    image.png

    属性注入方式注解有3种

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

    image.png
    image.png
    image.png

    image.png

    image.png

    AOP

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

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

    AOP基本原理

    image.png
    image.png
    image.png

    JDK动态代理

    image.png
    image.png

    代码示例

    image.png
    image.png
    image.png
    image.png

    AOP术语

    image.png
    image.png

    AspectJ基本概念和准备

    image.png

    切入点表达式(重点)

    image.png
    image.png

    基于注解实现AspectJ——重点

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    抽取共同切入点写法
    image.png
    image.png
    image.png

    基于XML配置文件实现AspectJ

    image.png

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

    image.png
    image.png
    image.png

    image.png

    image.png

    image.png

    查询某个值——count

    image.png
    image.png

    查询对象

    image.png

    查询对象列表

    image.png

    批量操作

    image.png
    image.png
    image.png

    事务管理

    image.png

    事务介绍

    image.png
    image.png

    注解声明式事务管理

    image.png
    image.png

    声明式事务参数配置

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    XML声明式事务管理

    image.png
    image.png
    image.png

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

    image.png
    image.png

    Spring5新特性

    整合slf4j2日志框架

    image.png

    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>
    

    image.png

    @Nullable注解

    image.png

    Lambda表达式创建Spring容器对象

    image.png

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

    image.png
    image.png
    image.png

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

    image.png

    SpringWebflux

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

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

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

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

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

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    基于注解编程模型

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    基于函数式编程模型

    image.png
    image.png
    image.png
    image.png
    image.png
    image.png

    Spring5重点掌握点总结

    image.png
    image.png
    image.png

    参考

    尚硅谷Spring5框架

  • 相关阅读:
    PLSQL学习笔记 wm_concat
    Oracle ERP 公司间往来的解决方案(转载)
    Excel单元格设成只读
    PLSQL笔记 存在性检查
    PL/SQL编程技巧
    查看Oracle EBS克隆Clone时间
    用wm_concat合并行及merge into更新
    商务英语900句
    外企公司常用英文缩写
    ASP.NET 2.0 XML 系列(5):用XmlReader读取XML文档
  • 原文地址:https://www.cnblogs.com/castamere/p/15934283.html
Copyright © 2020-2023  润新知