Spring5笔记

一、spring框架概述

  1. Spring是轻量级的开源的JavaEE框架。

  2. 可以解决企业应用开发的复杂性。

  3. Spring有两个核心部分:

    (1)IOC: 控制反转,把创建对象过程交给Spring进行管理。

    (2)AOP: 面向切面编程,不修改源代码进行功能增强。

  4. Spring特点:

    (1)方便解耦, 简化开发

    (2)Aop编程支持

    (3)方便程序

    (4)方便和其他框架整合

    (5)方便进行事务的操作

    (6)降低API开发难度

  5. spring的最新版本:

网址: https://spring.io/projects/spring-framework#learn

下载地址:https://repo.spring.io/ui/native/release/org/springframework/spring/

1.1 spring的模块:

在这里插入图片描述

二、IOC的底层原理

  1. xml解析、工厂模式、反射。

2.1 IOC(接口)

  1. IOC思想基于IOC容器完成,IOC容器底层就是对象工厂

  2. Spring提供IOC容器实现两种方式:(两个接口)

    (1)BeenFactory:是Spring内部的使用接口,不提供开发人员进行使用

    • 加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象。

    (2)ApplicationContext:BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用。

    • 加载配置文件时候就会把在配置文件对象进行创建。

2.2 IOC操作Bean管理

  1. Bean管理指的是两个操作:

​ (1)Spring创建对象

​ (2)Spring注入属性

  1. Bean管理操作有两种方式

    (1)基于xml配置文件方式实现

    (2)基于注解方式实现

2.3 bean的生命周期

  1. 通过构造器创建bean实例(无参构造)
  2. 为bean的属性设置值和对其他bean引用(调用set方法)
  3. 调用bean的初始化的方法(需要进行配置初始化的方法)
  4. bean可以使用了(对象获取到)
  5. 当容器关闭时候,调用bean的销毁的方法(需要进行配置销毁的方法)

2.4 基于注解方式实现属性注入

  1. @Autowired:根据属性类型进行自动装配
  2. @Qualifier:根据属性名称进行注入: 需要和上面的@Autowired一起使用
  3. @Resource:可以根据类型注入,可以根据名称注入
  4. @Value:注入普通类型属性:
@Value(value="abc")
private String name;

三、AOP原理

利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各个部分之间的耦合度降低,提高程序的可用性,同时提高了开发的效率。

3.1 AOP底层使用动态代理

  1. 有接口情况,使用JDK动态代理

    • 创建接口实现类代理对象,增强类的方法
      在这里插入图片描述
  2. 没有接口情况,使用CGLIB动态代理

    • 创建子类的代理对象,增强类的方法
      在这里插入图片描述

3.2 AOP(术语)

  1. 连接点: 类里面哪些方法可以被增强,这些方法成为连接点

  2. 切入点: 实际被被真正增强的方法,成为切入点

  3. 通知(增强)

    (1)实际增强的逻辑部分称为通知(增强)

    (2)通知有多种类型

    • 前置通知
    • 后置通知
    • 环绕通知
    • 异常通知
    • 最终通知
  4. 切面:是动作->把通知应用到切入点过程

3.3 AOP操作(准备)

  1. Spring框架一般都是基于AspectJ实现AOP操作

    (1)AspectJ:不是Spring的组成部分,独立AOP框架,一般AspectJ和Spring框架一起使用,进行AOP操作

  2. 基于AspectJ实现AOP操作

    (1)基于xml配置文件实现

    (2)基于注解方式实现(使用)

    • @Component
      @Aspect // 生成代理对象
      

四、事务

事务是数据库操作的基本单元,逻辑上一组操作,要么一起成功,要么一起失败。

4.1 事务的特征(ACID)

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

4.2 ioslation:事务隔离

  1. 事务有特性成为隔离性,多事务操作之间不会产生影响,不考虑隔离性产生很多问题
  2. 有三个读问题:脏读,不可重复读,幻(虚)读
  3. 脏读:一个未提交事务读取到另一个未提交事务的数据
  4. 不可重复读:一个未提交事务读取到另一个提交事务修改数据
  5. 虚读:一个未提交事务读取到另一个提交事务添加数据
  6. 通过设置事务隔离级别,解决读问题

五、spring5框架的新功能

  1. 整个spring5框架的代码基于Java8,运行时兼容JDK9,许多不建议使用的类和方法在代码库中删除
  2. 整合了Junit5的单元测试

WebFlux介绍

用于web开发的响应式开发。Webflux是一种异步非阻塞的框架,核心是基于Reacter的相关API实现的

  1. 响应式编程

    • 响应式编程是一种面向数据流和文化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。
  2. Webflux执行流程和核心API

    • SpringWebflux基于Reactor,默认使用容器是Netty, Netty是高性能的NIO框架,异步非阻塞的框架

    • BIO
      在这里插入图片描述

    • NIO
      在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值