type
status
date
slug
summary
tags
category
icon
password
一、框架概述
  • 轻量级
  • 解决企业应用开发的复杂性
  • 两个核心: IOC 和 AOP
    • IOC: 控制反转->把创建的对象交给spring bean统一管理
    • AOP: 面相切面,不需要修改源代码进行功能增强
  • 特点:
    • 方便解耦,简化开发
    • Aop 编程支持.方便程序测试。
    • 方便和其他框架进行整合
    • 方便进行事务操作。
    • 降低 API开发难度

二、IOC容器

实践

  1. 下载 spring.io
    1. notion image
  1. 下载
进入官网的github页面
notion image
点击如上如所示:
notion image
在到此位置, 位置错误
通过maven加载jar包,6.xxx版本需要java 11及以后
User.java
bean.xml
notion image

IOC 底层逻辑

  1. IOC
    1. 控制反转,把对象创建和对象之间的调用过程,交给Spring 进行管理
      使用 IOC 目的:为了耦合度降低。 做入门案例就是 IOC实现
  1. IOC 底层原理
    1. xml 解析 、工厂模式、反射
  1. 图解
notion image

IOC接口

1、IOC思想基于 IC容器完成,IOC容器底层就是对象工厂 2、Spring 提供 IOC容器实现两种方式:(两个接口)
(1)BeanFactory:I0C容器基本实现,是Spring 内部的使用接口,不提供开发人员进行使用.加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext: BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人员进行使用。加载配置文件时候就会把在配置文件对象进行创建
3、ApplicationContext接口实现类
notion image
notion image

IOC操作bean管理

  1. 基于xml创建对象
(1)在 spring配置文件中,使用 beān 标签,标签里面添加对应属性,就可以实现对象创建ml
(2)在 bean 标签有很多属性,介绍常用的属性。id 属性:唯一标识。class 属性:类全路径(包类路径)| (3)创建对象时候,默认也是执行无参数构造方法完成对象创建
  1. 基于xml方式注入属性
DI: 依赖注入,就是注入属性
  1. 第一种注入方式:使用set方法进行注入
(1)创建类,定义属性和对应的set方法
(2)构造方法
(3) p标签使用
在标签<beans 中添加p的xmlns
(4)注入其他类型的属性
  1. 字面量
    1. null 值
      <property name="address">
      <null/>
      </property>
  1. 属性值包含特殊符号
1️⃣ 通过转义的方式 eg: $lt; $gt
2️⃣ 特殊字符内容写到CDATA
</property>
  1. 外部bean 输入
    1. 内部注入
      1. 级联控制
      第一种写法
      第二种写法
      1. 注入集合
        1. 5.1 数组
          5.2 List
          5.3 Map
          5.4 集合里面设置对象类型值
          5.5 创建对个对象
          5.6 把集合注入部分提取出来

          FactoryBean

        2. Spring 有两种bean;一种是普通bean,另一种是factory bean
        3. 普通bean 配置文件的类型就是返回的类型
        4. 工厂bean 配置文件定义bean类型可以和返回值不一样
          1. 第一步:创建类,让这个类作为工厂bean,实现 factory bean
            第二步:实现接口里面的方法,实现的方法中的定义返回bean类型

            bean的作用域

          2. 在 spring 配置文件 bean 标签里面有属性(scope)用于设置单实例还是多实例,
          3. scope 默认属性值
            1. 第一个值:singleton 单实例(默认值)
              第二个值:prototype 多实例
          4. 区别:
            1. singleton 加载spring配置文件时候就会创建单实例对象;prototype在调用getBean方法时候创建多实例对象
            2. singleton 单实例; prototype 多实例
          5. request ,session等参数
          6. bean的生命周期

          7. 生命周期: 对象创建到销毁的过程
          8. 过程
            1. 通过构造器创建bean实例(无参构造)
            2. 为bean的属性设置值和对其他bean的引用(调用set方法)
            3. 初始化之前执行
            4. 调用bean的初始化方法(需要进行配置初始化方法)
            5. 初始化后执行
            6. bean可以使用(获取到对象了)
            7. 容器关闭的时候,调用bean的销毁方法(需要进行配置销毁方法)
          9. xml自动装配
            1. 1、什么是自动装配 根据指定装配规则(属性名称或者属性类型)Spring 自动将匹配的属性值进行注入
              2.过程
              实现自动装配 bean 标签属性autowike,配置自动装配autowire 属性常用两个值:byName,根据属性名称注入,注入值 bean 的id 值和类属性名称一样byType,根据属性类型注入
            2. 外部属性文件
          10. 基于注解
            1. 什么是注解。 注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值.
              1. 使用注解,注解作用在类上面,方法上面,属性上面:
                使用注解目的:简化 xml配置
            2. spring针对Bean管理中创建对象提供注解
              1. @Component
              2. @Service
              3. @Controller
              4. @repository
              5. 以上注解功能都是一样的,都可以用来创建实力
            3. 基于注解方式创建对象
              1. 引入组件依赖
                需要 aop相关依赖包 context包包含了aop,如果没有再引入
                bean配置
                开启配置细节
            4. 基于注解属性注入
              1. @Autoware:根据属性类型进行自动装配
                自动装配
                @Qualifier: 根据属性名称进行注入
                @Resource: 可以根据类型注入,可以根据名称注入
              @Value: 值
          11. 完全基于注解开发(Spring boot 的模式))

        三、AOP

        1. aop原理
        (1)面向切面编程(方面),利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。 (2)通俗描述:不通过修改源代码方式,在主干功能里面添加新功能 (3)使用登录例子说明 AOP
        notion image
        1. 底层原理
          1. 使用动态代理
            1. (1)有接口情况,使用JDK动态代理
              notion image
              (2)无接口,只用CGLIB动态代理
              notion image
            2. aop术语:
              1. 1、连接点 类里面哪些方法可以被增强,这些方法称为连接点 2、切入点 实际被真正增强的方法,称为切入点 3、通知(增强) (1)实际增强的逻辑部分称为通知(增强) (2)通知有多钟类型 *前置通知 *后置通知 *环绕通知 *异常通知 *最终通知finally 4、切面 是动作 (1)把通知应用到切入点过程
            3. 准备工作3.3、项目工程中引入AOP相关依
              1. 3.1、Spring 框架一般都是基于 Aspect] 实现 AOP 操作:
                (1)Aspect] 不是 Spring 组成部分,独立 AOP 框架,一般把 Aspect] 和 Spimg,框架一起使用,进行 AOP 操作。 3.2、基于 Aspect] 实现 AOP 操作、
                (1)基于 xml 配置文件实现
                i、创建类:
                ii、创建增强类;编写增强逻辑
                在增强类里面,创建方法,让不同方法代表不同通知类型
                iii、进行通知配置
                (1)在spring配置文件中,开启注解扫描
                (2)使用住在创建user 和 userAop 对象
                (3)在增强类上面添加注解@Aspect
                (4) 在spring配置文件中开启生成代理对象
                (2)基于注解方式实现(使用)
                3.3
                notion image
        notion image
        3.4、切入点表达式
        (1)写入点表达式作用:知道对那个类里面的方法进行增强
        (2)语法结构
        4.配置开启注解扫描
        犯错误:
        https://www.springframework.org/schema/ context /spring-aop.xsd">
        注解增强:
        1. JdbcTemplate
        3.1 准备工作
        3.2 创建对应的框架
        3.3 别忘记对应的包文件
        1. propagation: 事务传播行为 (1)多事务方法直接进行调用,这个过程中事务 是如何进行管理的,
        notion image
        notion image
        1. 事务操作
        notion image
        1. 开启事务配置
        在service包下使用注解 @Transactional
        1. ioslation:事务隔离级别、 (1)事务有特性成为隔离性,多事务操作之间不会产生影响。不考虑隔离性产生很多问题
          1. (2)有三个读问题:脏读、不可重复读、虚(幻)读, (3)脏读:一个未提交事务读取到另一个未提交事务的数据
        notion image
        (4)不可重复读:一个未提交事务读取到另一提交事务修改数据
        notion image
        (5)虚读:一个未提交事务读取到另一提交事务添加数据 (6)解决:通过设置事务隔离性,解决读问题
        notion image
        (7)timeout: 超时时间。 (1)事务需要在一定时间内进行提交,如果不提交进行回滚、
        (2)默认值是-1,设置时间以秒单位进行计算。
        (8) readOnly:是否只读 (1) 读:查询操作,写:添加修改删除操作, (2) readOnly 默认值 false,表示可以查询,可以添加修改删除操作。 (3) 设置 readOnly,值是 true,设置成 true 之后,只能查询,
        (8) rollbackFor:回滚 设置出现哪些异常进行事务回滚、
        (9) noRollbackFor:不回滚 设置出现哪些异常不进行事务回滚,
        1. XML配置管理设置
        1. 完全开启注解
           
          自动装配原理JQuery 教程
          Loading...