Spring5

Spring5

Spring 概念

框架概述:

在这里插入图片描述

  1. Spring是一个轻量级开源的JAVAEE框架

​ 关键词:

(1)轻量级

(2)开源

(3)框架

  1. 可以解决企业应用开发的复杂性
  2. Spring两个核心的部分:IOC和AOP

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

(2)AOP:面向切面,不修改源代码的情况下,进行功能的添加和增强

  1. Spring的特点

(1)方便解耦(耦合性降低),简化开发

(2)Aop编程的支持

(4)方便程序的测试

(5)方便和其他框架进行整合

(6)降低API(如JDBC)开发难度

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

(8)java源码是经典学习

入门案例

  1. spring官网:spring.io->project->spring framework->learn->spring 5.2.x(GA),GA表示稳定->点击GitHub图标->access to binaries->spring framework Artifats点击该目录下的下载地址,在这里插入图片描述
    找到release(发布)->org->spring->复制该地址,下载版本

  2. 打开idea,创建普通的java工程

  3. 引入jar包,建lib目录将jar包复制过去,点击project structure->modules->+,导入

    目前仅需要核心jar包和commons-logging(日志包)
    在这里插入图片描述

    1. 创建普通类,写一个普通方法

    2. 创建Spring配置文件,在配置文件中创建对象

      (1)src目录下,创建xml格式的配置文件

      <bean id="xxx" class="com.xxx.xxx.xxx.xxx"> </bean>
      
    3. 建立测试类,进行测试

    @Test
    
    public void test(){
    
    //1.加载配置文件
    ApplicationContext context=new ClassPathApplicationContext(beaa1.xml)
    
    
    //2. 获取配置文件创建的对象
        context.getBean(user,user.class)
        //写bean的id,id.claas
        sout(user);
        user.add();
    
    }
    

    (1)xml下,bean的创建语句是什么?

    (2)加载配置文件的语句是什么?

    (3)获取配置文件创建的对象的语句是什么?

IOC容器

Inversion of Control

(1) IOC底层原理

  1. 什么是IOC?

    (1)控制反转:把对象的创建和对象之间的调用过程,交给Spring进行管理

    (2)使用IOC目的:为了耦合度降低

    (3)入门案例就是IOC实现

  2. IOC底层原理

    (1)xml解析、工厂模式、反射

  3. 图解

在这里插入图片描述

在这里插入图片描述

工厂模式的目的:耦合度降低到最低限度

在这里插入图片描述

什么是IOC?

(2)IOC接口

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

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

    (1)BeanFactory:IOC容器的基本实现,是Spring内部的使用的接口,不提供给开发人员使用

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

    **(2)ApplicationContext:**BeanFactory接口的子接口,提供更多更强大的功能,提供给开发人员使用

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

    ApplicationContext主要实现类

    打开类结构的快捷键:Ctrl+H

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vLyJNMM-1646324959844)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122170720305.png)]

File…:写盘符路径(全路径)

Class…:写src下的的路径(类路径)

IOC容器底层的本质是什么?

IOC容器实现的两个接口是什么?

(3)IOC操作Bean管理

  1. 什么是Bean管理?

    (1)Spring创建对象

    (2)Spring注入属性

    1. Bean操作有两种方式
    (1)xml配置文件

    (1)什么是bean管理?

    (2)spring对象的创建的语句是什么?

    (3)DI的两种注入方式是什么?

    (4)set注入的两种方式的语句怎么写?

    (5)有参构造怎么写?

    (6)注入的内容为null,xml字符,怎么注入?

    (7)外部bean怎么注入?

    (8)内部bean注入?

    (9)级联赋值的两种方法?

    (10)xml注入集合属性,如数组、list、map、set

    (11)集合中存放对象怎么写?

    (12)集合抽取作为公共部分怎么写?

    1. Spring创建对象

      <bean id="xxx" class="com.xxx.xxx.xxx.xxx"> </bean>
      

      (1)使用bean标签,标签里面添加对应的属性,就可以实现对象创建

      (2)常用的bean属性

      id:给对象取个别名(唯一标识)

      class:类的全路径(src下的属性)

      ​ name:类似id,但可以加特殊符号而id可以

      (3)创建对象的时候默认使用无参构造

      1. 基于xml注入属性

      (1)DI:依赖注入,就是注入属性

      第一种注入方式:set(先创建对象再注入属性)

      ​ **(1)**创建类,定义属性和 对应的set方法
      在这里插入图片描述

      (2) 在spring配置文件配置对象的创建,配置属性的注入

      普通:在这里插入图片描述

      spring:
      在这里插入图片描述

      简化的set注入方法(了解):

      ​ 使用P,名称空间在配置文件中

      (1)添加P名称空间在配置文件中
      在这里插入图片描述

      在标签后加入一个约束xmlns:p = “http…org/…/p”(前面复制前面的xmlns标签)(名称空间)

      (2)进行属性注入,在bean标签里面进行操作在这里插入图片描述

      第二中注入方式:使用有参构造进行注入

      ​ (1)创建类:定义属性,创建有属性的构造方法

在这里插入图片描述

     ​		(2)在spring配置文件中进行配置,有参构造注入

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IvH92XZG-1646324959849)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122181719777.png)]![在这里插入图片描述](https://img-blog.csdnimg.cn/9f2e87f5c3e043aa81f0edf81a0977fb.png#pic_center)


     > 另一中方法:有参构造索引值进行注入,0表示第一个属性,1表示第二个属性

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8yPBuBBj-1646324959849)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122181941668.png)]

     3. xml注入其他属性

        (1)字面量(属性设置固定值)

        ​	1. null

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hYr4aNha-1646324959850)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122184240775.png)]

        2. 属性中包含特殊符号

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BnsjDFYf-1646324959851)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122184501262.png)]

        (1)转义&lt(<),&gt(>)

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwHpt880-1646324959851)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122184528203.png)]

        > gt 英文全称是 Greater than

        > lt 英文全称是 Less than

        (2)写到CDATA中(property中的value可以分开写)

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DCA8PMJV-1646324959852)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122184919224.png)]

        <![CDATA[内容]]>

        > Character Data

     4. 注入属性

        1. 外部bean

           ​	(1)创建两个类service类和dao类

           ​	(2)在service中调用dao里面的方法

           ​	(3)在配置文件中进行配置

           > 普通方式

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CUAHkfft-1646324959853)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122214316534.png)]

           > spring方式

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CYaP198F-1646324959854)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122214652059.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R3INs3L4-1646324959854)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122214928268.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r94M6OfX-1646324959855)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122215357014.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HpvFu3TV-1646324959855)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122215515090.png)]

        2. 内部bean

           (1)一对多关系:部门和员工

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ZmrXOn1-1646324959856)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122220057291.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-InVCR2Cv-1646324959856)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122220144274.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YcfddmIj-1646324959857)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122220257055.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1LXdNfZ7-1646324959857)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122220804396.png)]

           3. 注入属性-级联赋值(对象中包含对象,给内部对象赋值)

           第一种方法:

           > 外部bean[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ca6ppjls-1646324959858)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122222601468.png)]

           第二种方法:

           > 要点:内部对象要有get方法
        >
           > [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lk8j32nA-1646324959858)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122225636401.png)]
        
           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6mEOCShU-1646324959861)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122225720904.png)]

     5. xml注入集合属性

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lpsMNI0x-1646324959862)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122230609367.png)]

     (1)数组

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6s1jEaB7-1646324959863)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122230946945.png)]

     (2)list集合

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nt3SCmmb-1646324959864)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122231033170.png)]

     (3)Map集合 

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5tx21mB-1646324959865)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122231103869.png)]

     (4)set集合 

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YSU3t8MQ-1646324959866)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122231132624.png)]

     细节:(1)集合中放对象

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBf9ifDO-1646324959866)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122232201641.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-783EJT0j-1646324959867)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122232342408.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oh13MHoX-1646324959867)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122232613308.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W8Sdq5P1-1646324959868)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122232648961.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AKUKzbUD-1646324959868)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122232926684.png)]

     ​			(2)集合抽取作为公共部分

     ​	1. 在spring配置文件中引入名称空间:util

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fuGAv37o-1646324959869)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122235634874.png)]

     2. 使用util标签完成list集合提取

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xv9RH4uT-1646324959870)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220122235848667.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-clxkIJ0S-1646324959870)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220123000733466.png)]

     6. FactoryBean

     (1)Spring中有两种bean,一种为普通bean,一种为factorybean

     (2)普通bean:在配置文件中定义baan类型就是返回类型

     (3)工厂bean:返回类型可以不是定义的类型

     ​	做法:(1)创建类,让这个类作为工厂bean, 实现接口factorybean

     ​				(2)实现接口里面的方法,在实现的方法中定义返回的bean类型

     普通bean:

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KSdZgG72-1646324959872)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124210715552.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uRFR21UU-1646324959873)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124210811118.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OQ8iNg09-1646324959874)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124210852208.png)]

     factorybean:

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U6qT6Ho6-1646324959875)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124211001420.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yTwjC5UM-1646324959875)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124211015192.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kb9nA0dB-1646324959876)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124211249593.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E5jvVLTu-1646324959876)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124223236521.png)]

     7. bean的作用域

     (1)在spring里面,设计创建bean是单实例还是多实例。

     (2)在spring里面,默认情况下是单实例

     验证:

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cUtP7DjB-1646324959877)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124230607035.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3efr6ChL-1646324959878)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124230630049.png)]

     (3)如何设置单实例还是多实例

     			1. 在spring配置文件bean标签里有属性(scope)用于设置单实例还是多实例
        			2. scope属性值:singleton(单)、prototype(多)、request、session

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jXq5vt8e-1646324959878)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124231016509.png)]

     [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HwimQiNY-1646324959879)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124231033254.png)]

     3. singleton、prototype的区别

        (1)单、多

        (2)设置为singleton,加载spring配置文件的时候就会创建单实例对象

        (3)设置为prototype,不是在加载spring配置文件的时候创建,在调用getBean方法时候创建多实例对象

        8. bean的生命周期

           (1)对象从创建到销毁的过程

           (2)bean生命周期

             1. 通过构造器创建bean实例(无参数构造)

             2. 为bean的属性设置值和队其他bean的引用(调用set方法)

             3. > 把bean实例传递给bean后置处理器的方法

             4. 调用bean的初始化的方法(需要进行配置)

             5. > 把bean实例传递给bean后置处理器的方法

             6. bean可以使用了(对象获取到了)

             7. 当容器关闭时候,调用bean的消耗方法(需要进行配置销毁的方法)

           (3)演示

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ytyde3sJ-1646324959879)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124232409767.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LIjXbiYe-1646324959880)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124232439590.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-baz6bVBS-1646324959880)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124232529523.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-scgHFcSC-1646324959881)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124232548128.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9IUUMsCR-1646324959882)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124232642143.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkR3EF6o-1646324959883)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124232739944.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4OhMQQRt-1646324959884)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124232757479.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zI401Aps-1646324959884)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124232825603.png)]

           加上bean的后置处理器,则一共有7步,添加后置处理器

           (1)创建类,实现接口BeanPostProcessor,创建后置处理器

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vLpBxxFP-1646324959885)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124233813491.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7mco0SDC-1646324959886)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124233942303.png)]

           怎么知道是后置处理器?

           ​	因为实现BeanPostProcessor

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SswvcHV7-1646324959887)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124234141615.png)]

        9. 自动装配

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L3JIrnM5-1646324959887)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124234328860.png)]

           ->手动装配

           (1)根据指定装配规则(属性名称或者属性类型),Spring自动将匹配的属性值进行注入

           (2)演示

           

            手动:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6lbHrLHj-1646324959888)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124234617476.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KQxNnPsK-1646324959888)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124234658253.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bdhQcBwV-1646324959889)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124234810833.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2fCijbcq-1646324959889)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220124234922651.png)]

           自动装配(将一个类注入到另一个类中):

           bean标签属性autowise,配置自动装配

           autowise属性常用两个值:

           (1)byName

           根据属性名称注入,注入值bean的id值和类属性名称一样[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52kmhdwa-1646324959890)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125000312572.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B9nU9ZuM-1646324959891)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125000155831.png)]

           (2)byType(相同类型的type不能定义多个bean)

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5aGap1am-1646324959892)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125000404575.png)]

           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bcLHSEMb-1646324959893)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125000707775.png)]

           10. 外部属性文件
        
           (1)直接配置数据库信息->配置德鲁伊连接池->引入德鲁伊连接池依赖Jar包
        
           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IyrAApmP-1646324959894)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125122642931.png)]
           
           (2)引入外部的属性文件->properties格式文件,写数据库信息(key-value)->把外部properties属性文件引入到spring文件中(引入context名称空间)->在spring配置文件中[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TvU1eLNi-1646324959895)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125122919062.png)]
           
           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N3U1wfqn-1646324959895)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125123121845.png)]
           
           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NYgyKA4G-1646324959896)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125123322922.png)]
           
           > placeholder占位符
           
           [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KomqC2yt-1646324959896)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125123602582.png)]

**(2)注解**

	1. 什么是注解?

注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值)

> @Test

2. 注解在什么地方用?

(1)类上面

(2)方法上面

(3)属性上面

3. 使用注解的目的是什么?

为了简化xml配置

4. Spring针对Bean管理中创建对象提供注解

(1)@Component:组件

(2)@Service:业务逻辑层,service层

(3)@Controller:web层

(4)@Repository(仓库):dao层

上面的四个注解的功能是一样的,都可以用来创建bean实例

5. 基于注解方式实现对象创建

(1)引入依赖

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dG1no82A-1646324959897)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125124906640.png)]

​ (2)开启组件扫描

具体步骤:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DE0HQR6d-1646324959898)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125125150346.png)]

扫描多个包的具体操作:

  1. 多个包之间,隔开

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I9wHqHqA-1646324959899)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125125532873.png)]

  1. 扫描包的上层目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x1cWWWdL-1646324959899)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125125614007.png)]

(3)创建类,在类上面添加创建对象注释

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ga0ETas1-1646324959900)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125125946990.png)]

注解里面value属性值可以不写,默认值为类名称,将首字母改为小写

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C1RNpT9j-1646324959900)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125130217784.png)]

测试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jj7efXqJ-1646324959901)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125130427179.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mceeuZsz-1646324959902)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125130440453.png)]

  1. 开启组件扫描的一些细节问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0qAIaLfz-1646324959902)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125131734189.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1oDHvszs-1646324959904)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125131603455.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s4V5U6yq-1646324959905)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125131820870.png)]

  1. 注解实现属性注入

(1)@Autowired(Wire有链接的意思):根据属性类型进行自动装配

第一步:创建对象,在service和dao类创建对象注解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N2Dzu8Lw-1646324959906)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125132518852.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XEfxRA98-1646324959907)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125132553259.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4k7xxuAg-1646324959908)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125132841317.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-flDGbZat-1646324959908)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125132906920.png)]

第二步:在service里面注入dao,在service类添加dao类型属性,在属性上面使用注解

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gsCFIcBT-1646324959909)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125133009146.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLtUdkD4-1646324959909)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125133146049.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udsAoy6o-1646324959910)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125133356140.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aNe5rczU-1646324959910)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125133404108.png)]

(2)@Qualifier:根据名称进行注入,要和@Autowired一起使用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FHHR7AMm-1646324959911)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125133641892.png)]

(3)@Resource:可根据类型注入,可根据名称注入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5HfTkKzm-1646324959911)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125162509007.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F380ptIi-1646324959912)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125162611074.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uO37giA8-1646324959912)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125162907847.png)]

不是spring中的而是javax中的

(4)@Value:注入普通类型属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1OzDuk4K-1646324959913)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125163042758.png)]

8、完全注解开发

(1)创建配置类,替代xml配置文件,加注解

@Configuration、扫组件描

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9ToRGyGb-1646324959914)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125163553485.png)]

(2)编写测试类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ga5npZ2o-1646324959914)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125163918835.png)]

AOP

AOP的概念

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

(2)通俗描述:不通过修改源代码的方式,在主干 功能里面添加新功能

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QFgi6b9F-1646324959916)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125164841700.png)]

AOP底层原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xwL7KZ5S-1646324959916)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125165654344.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ayz0UkAM-1646324959917)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125165938235.png)]

(1)AOP的动态代理(JDK)

  1. 使用JDK动态代理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t2pzRsV3-1646324959918)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125170228828.png)]

调用newProxyInstan方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4HuVRksQ-1646324959918)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125170514757.png)]

第一个参数:类加载器

第二个参数:接口,增强方法所在类,这个类实现的接口,支持多个接口

第三个参数:实现这个接口InvocationHandler,创建代理对象,写增强的方法

  1. 编写 JDK动态代理代码

(1)创建接口,定义方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V8J1L7DN-1646324959919)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125201525964.png)]

(2)创建接口实现 类,实现方法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IATA969d-1646324959920)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125201803915.png)]

(3)使用Proxy类创建接口代理对象

  1. 匿名内部类

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RGdZRlYQ-1646324959921)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125202356128.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zswL1svk-1646324959921)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220125202910078.png)]

    1. 创建代理对象代码

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KNFmo6u7-1646324959922)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126121432440.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-knh59PCB-1646324959922)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126120313104.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pd24Qads-1646324959924)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126121242124.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ri5JtIqq-1646324959925)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126121308800.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xElHJjiT-1646324959926)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126121346091.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OREbSNrB-1646324959926)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126123112301.png)]

    AOP(术语)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ovKNlaXT-1646324959927)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126123743408.png)]

    1. 连接点

      类里面的哪些方法可以被增强,这些方法称为连接点

    2. 切入点

      实际被真正增强的方法就交切入点

    3. 通知(增强)

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

      (2)通知有多种类型

      • 前置通知
      • 后置通知
      • 环绕通知(前后)
      • 异常通知
      • 最终通知(一定会执行,不管有没有异常)
    4. 切面

      是动作

      (1)把通知应用到切入点过程

    AOP操作准备

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

      (1)什么是AspectJ

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

    2. 基于AspectJ实现AOP操作

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

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

    3. 在工程里面引入AOP相关依赖

    4. 切入点表达式

      (1)切入点表达式作用:知道对哪个类哪个方法进行增强

      (2)语法结构:

      execution([权限修饰符][返回类型][类全路径][方法名称][参数列表])

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2b0RHFUt-1646324959927)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126125804233.png)]

      execution(* com.Book.add(…))

      返回类型可以省略

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3jI7zcFP-1646324959928)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126125918300.png)]

      execution(* com.Book.*(…))

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J6YMVZmC-1646324959929)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126130051027.png)]

      execution(* com.*.*(…))

    AOP操作(注解)

    1. 创建一个被增强类

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-malVsHlO-1646324959929)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126130421564.png)]

    1. 创建增强类,编写增强逻辑

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sLugItPD-1646324959930)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126130620677.png)]

    1. 进行通知的配置

      (1)在spring配置文件中,开启注解扫描

      (2)使用注解创建User和UserProxy对象

      (3)在增强类上面添加注解@Aspect

      (4)在spring配置文件中开启代理生成对象

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h85PKvkg-1646324959930)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126130959567.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ijk9vgXg-1646324959931)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126131012238.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V6ykM72W-1646324959932)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126131032456.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rct64Hzc-1646324959932)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126131043616.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fq8pi6Jw-1646324959933)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126131131593.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bke4MZwP-1646324959934)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126131227933.png)]

      1. 配置不同类型的通知

        (1)在增强类里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p6S49F8s-1646324959934)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126131609072.png)]测试

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZMGNJj0l-1646324959936)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126131810334.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YvJfn4VL-1646324959937)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126131832869.png)]

        after(最终通知)和afterreturning的区别:

        after是方法结束之后执行,不关有无异常都执行

        afterReturnin(后置通知(返回通知 ))g是方法执行完后,返回了返回值之后执行,有异常不执行

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CCQfNld6-1646324959937)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126133034273.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aDARM2P6-1646324959938)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126133126336.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5AlfodSu-1646324959939)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126133149544.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vR7XBlbF-1646324959939)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126133216511.png)]

    2. 相同切入点抽取

    类似java中公共类的抽取

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LycehOMm-1646324959940)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126202601270.png)]

    1. 有多个增强类,对同一个方法进行增强,设置增强类优先级

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LFPTo55a-1646324959940)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126202857090.png)]

    (1)在增强类上面添加注解@Order(数字类型值),数字类型值越小优先级越高

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9TSwy8R2-1646324959941)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126203224744.png)]

    AspectJ配置文件(了解)

    1. 创建两个类,增强类和被增强类,创建方法

      被增强类

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VuGFnBcG-1646324959942)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126203701166.png)]

      增强类

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ad8COzav-1646324959942)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126203802249.png)]

    2. 在spring配置文件中创建两个类对象

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yKsUMZSW-1646324959943)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126203913217.png)]

    3. 在spring配置文件中配置切入点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dZaeyJoQ-1646324959943)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126204221609.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IuDI0NaL-1646324959944)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126204330057.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0AeYmkrH-1646324959945)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126204342080.png)]

    完全注解方式

    使用配置类

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ojA5rb3T-1646324959945)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126204524588.png)]

JdbcTemplate

JdbcTemplate的概念和准备

  1. 什么是JdbcTemplate?

Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作

  1. 准备工作

    (1)引入jar包

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2tgpQRA-1646324959946)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126210448035.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y3YXrtwO-1646324959947)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126210556704.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0LbVRiaJ-1646324959947)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126210613398.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qlpWiH3c-1646324959949)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126210632615.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WzV32KfH-1646324959949)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126210747102.png)]

    (2)数据库连接池配置

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5LwX2enl-1646324959949)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126210859179.png)]

    (3)配置jdbcTemplate对象,注入DataSource

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4IEacq0n-1646324959950)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126211213622.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UOaN19GF-1646324959950)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126211426266.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uMiiFytZ-1646324959950)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126211524296.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qWhCLWk4-1646324959951)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126211543816.png)]

    (4)创建service类,创建dao类,在dao注入jdbcTemplate对象

    service中注入dao,dao中注入jdbcTemplate

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AgKkd1Qp-1646324959951)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126212118614.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-83yqzVqh-1646324959951)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126212145730.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8GveqmiK-1646324959952)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126212201473.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PaS5lZ7-1646324959952)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126212318013.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KhOcpuZY-1646324959952)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126212418270.png)]

    jdbctemplate在配置文件中创建了

    添加

    1. 对应数据库创建实体类

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cytdS44y-1646324959953)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126215322738.png)]

    1. 编写service和dao

      (1)在dao进行数据库添加操作.

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gamcZ59O-1646324959953)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126215751928.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BZfzeKkd-1646324959954)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126215812512.png)]

      (2)调用JdbcTemplate对象里面 update方法实现添加操作[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qNAu1xi2-1646324959955)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126220007424.png)]

      • 有两个参数
      • 第一个参数:sql语句
      • 第二个参数:可变参数,占位符(?)的值

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uxKjIcBj-1646324959956)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126220307383.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FKFA75gB-1646324959957)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126222146336.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-txBL8fni-1646324959958)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126222234655.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l7lAFI1c-1646324959958)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126222537783.png)]

      测试类

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RXz5kaIe-1646324959959)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126222631672.png)]

      修改和删除

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xzg51jrr-1646324959960)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126223242671.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gbix4upI-1646324959960)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126223304278.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3FW34PTL-1646324959961)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126223441849.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DETPP72q-1646324959962)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126223537161.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uKXeeMbC-1646324959962)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126223656496.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ug6K1qvX-1646324959963)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126223747741.png)]

      查询

      1. 查询返回某个值

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F9dI1Fjj-1646324959963)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126224025030.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mU1Wmz2L-1646324959966)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126224149586.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RVrdOwkd-1646324959967)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126224323669.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x58SSfLH-1646324959968)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126224346589.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s192ypsb-1646324959968)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126224449821.png)]

        • 第一个参数:sql语句
        • 第二个参数:返回类型的class(如:Interger.class)

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vXREc65N-1646324959969)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126224651211.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4bAg9DvP-1646324959970)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126224751642.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NjiCLs55-1646324959999)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126224824177.png)]

        查询返回对象

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iQ3Oereo-1646324960000)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126231513865.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nc2AQTX0-1646324960001)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126231546272.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NgdRP5Ca-1646324960002)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126231711821.png)]

        • 第一个参数:sql语句

        • 第二个参数:RowMapper,是接口,返回不同类型数据,使用这个接口实现类完成数据封装

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SseetJjA-1646324960003)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126232011957.png)]

        • 第三个参数:sql语句值

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-epTgqfKR-1646324960003)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126232249044.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0YCCsTw1-1646324960005)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126232305810.png)]

        返回集合

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a48XasCA-1646324960005)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126232518571.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VfG5ukEr-1646324960006)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126232542893.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x72EMuVo-1646324960007)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126232637316.png)]

        • 第一个参数:sql语句
        • 第二个参数:RowMapper,是接口,返回不同类型数据,使用这个接口实现类完成数据封装
        • 第三个参数:sql语句值

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W3jltNfy-1646324960008)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126232829045.png)]

        测试

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gzVj4R8U-1646324960009)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126232933099.png)]

      批量操作

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Fjwfkps-1646324960009)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126233250702.png)]

      • 第一个参数:sql语句
      • 第二个参数:list集合,添加多条记录数据
      1. 批量添加

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-opKgXeSb-1646324960014)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126234036174.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4fxdyB6d-1646324960014)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126233957005.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f3oHEk1K-1646324960016)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126234225216.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qTwIymrC-1646324960017)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220126234500518.png)]

      2. 批量修改

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jiHolFxs-1646324960018)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127123556534.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eToUBk7p-1646324960018)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127123622971.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rTsHOqA2-1646324960019)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127123717518.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XuoHf2U9-1646324960020)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127123923126.png)]

      3. 批量删除

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vGioRJ3P-1646324960020)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127124142956.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BkB05DSu-1646324960021)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127124157568.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FpXVIm22-1646324960022)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127124252533.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9NH9n1f7-1646324960022)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127124356052.png)]

事务管理

  1. 基本概念

    (1)什么是事务?

    事务是数据库操作的最基本单元,逻辑上的一组操作,要么都成功,如果有一个失败所有操作都失败,经典场景:银行转账

    (2)事务的四个特性

    • 原子性(atomicity):不可分割,都成工或都失败
    • 一致性(consistency):总量不变(如转钱)
    • 隔离性(isolation):操作同一事务,相互之间不会产生影响
    • 持久性(durability):提交后,表中数据真正发生变化
  2. 搭建事务操作环境

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tpcd03Tv-1646324960023)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127130121105.png)]

    1. 创建数据库表,添加记录

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofkxbikX-1646324960024)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127130300357.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IGwfKvo1-1646324960024)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127130348211.png)]

    2. 创建service,搭建dao,完成对象创建和注入关系

      (1)service中注入dao,dao中注入jdbcTemplate,jdbcTemplate注入DataSource

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cwMAe4St-1646324960025)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127131240376.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UWeseAYd-1646324960026)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127131538236.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SKjBXoJ1-1646324960026)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127131559557.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HL5ID48t-1646324960027)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127131657296.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-99oe52y7-1646324960029)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127131745902.png)]

    3. 在dao创建两个方法:多钱和少钱的方法,在service创建方法(转账的方法)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hzXFb1Y9-1646324960030)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127132010341.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E8jM7LjF-1646324960031)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127132207963.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tPlNkPpB-1646324960032)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127132228916.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isBLdP5v-1646324960032)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127132411515.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jSUAeQiv-1646324960033)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127132538166.png)]

    1. 上面代码,执行过程中出现了异常,就会产生问题

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fs1ZsFsd-1646324960035)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127132835619.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wLPuUmGK-1646324960036)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127132904228.png)]

    (1)上面问题如何解决呢?

     	事务
    

    (2)开启事务->进行业务操作(写在try中)->没有异常,提交事务->出现异常,事务回滚(写在catch中)

    普通:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HUfc4HXK-1646324960036)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127133344136.png)]

    1. Spring管理事务

      (1)一般加到Service层,Service层一般是逻辑上的一组操作

      (2)在Spring中进行事务管理操作有两种方式

      • 编程式事务管理(一般不用,造成臃肿)
      • 声明式事务管理
        • 基于注解(常用)
        • 基于xml

      (3)声明式事务管理,底层使用AOP

      面试:在什么地方使用过AOP?

      (4)Spring事务管理API

      • 提供 一个接口,代表事务管理器,这个接口针对不同的框架提供不同的实现类

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O2pWmH5F-1646324960037)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127134331702.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3oTKdFDR-1646324960038)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127134705594.png)]

        步骤:

        1. 在spring配置文件配置事务管理器

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NYPuTGA9-1646324960038)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127140405900.png)]

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z4VLkpfr-1646324960044)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127140428920.png)]

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7sbJVqYj-1646324960045)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127140457852.png)]

        2. 在配置文件中开启事务注解

          (1)引入名称空间tx(transaction)

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9oCO1KAg-1646324960045)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127140906273.png)]

          (2)开启事务注解

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VbEtnJ26-1646324960046)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127141001979.png)]

        3. 在service类上面(或者service类方法上面)添加注解

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FcaHUKjp-1646324960046)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127141141721.png)]

          (也可以加到 方法上面)

          添加到类,就是所有方法都添加事务,写方法就只是这个方法上有事务

      1. 声明式事务管理参数配置

        (1)在service类上面添加注解@Transactional,在这个注解里面可以配置事务相关参数

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uuihPKsv-1646324960047)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127141840218.png)]

      • propagation:事务传播行为

        事务方法之间进行调用,这个过程中事务是如何进行管理的

        • 事务方法:对数据库表数据进行变化的操作(增删改、查不算)

        • 传播属性

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lB1ne1Oz-1646324960047)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127142759553.png)]

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0pkeJb9q-1646324960048)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127143116638.png)]

          不配置,默认为:required

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xqU6GyDf-1646324960048)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127143245428.png)]

      • isolation:事务隔离级别

        (1)事务有特性成为隔离性,多事务操作之间不会产生英雄,不考虑隔离性产生很多问题。

        (2)有三个读问题:脏读、不可重复读、幻(虚)读

        • 脏读(!!严重):一个未提交的事务读取到了另一个未提交事务的数据

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bBo02iRx-1646324960049)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127144012256.png)]

        • 不可重复读:一个未提交的事务读取到另一个提交事务修改数据

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cXE1Gd6X-1646324960049)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127144503570.png)]

        • 虚读:不可重复读:一个未提交的事务读取到另一个提交事务添加数据

        (3)解决方法,设置事务隔离级别,解决读问题

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VB7fuAbj-1646324960050)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127144906596.png)]

        read uncommitted

        read committed

        repeatable read(默认)

        serializable

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8XeEl7By-1646324960050)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220127145110484.png)]

      • timeout:超时时间

      (1)事务需要在一定时间内进行提交,如果不进行提交将会进行回滚

      (2)默认值为-1,表示永不超时

      (3)以秒为单位进行计算

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szPS1VpH-1646324960050)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128001352144.png)]

      • readOnly:是否只读

        (1)读:查询操作,写:添加、修改、删除操作

        (2)readOnly默认值为false,可以进行查询,添加、修改操作

        (3)可以认为将其设为true,设置为true后,只能进行查询操作

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hVdDURDj-1646324960051)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128001709025.png)]

      • rollbackFor:回滚

        设置出现那些异常进行回滚

      • norollbackFor:不回滚

        设置出现那些异常不进行回滚

        写法:属性=异常的类

      xml声明式事务管理

      1. 在spring配置文件中,配置事务管理器

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eSDcbDZA-1646324960052)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128002355815.png)]

      2. 配置通知(事务)

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VsJjittJ-1646324960052)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128002658032.png)]

      3. 配置切入点(被增强的方法)和切面

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-53QvBHrY-1646324960053)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128003038607.png)]

      4. 测试

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ob06z2Zr-1646324960054)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128003305012.png)]

      完全注解开发

      1. 创建配置类

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RYhNXEYy-1646324960055)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128003909847.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LWp60pez-1646324960055)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128003935754.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RiqcK1vi-1646324960056)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128004140247.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Aa75YO4i-1646324960057)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128004148639.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ai3WxsBM-1646324960057)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128004256154.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Mr0PJRI-1646324960058)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128004233171.png)]

测试:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wQOPDZCi-1646324960059)(C:\Users\Administrator\Desktop\java学习\Spring5.assets\image-20220128004403249.png)]

Spring 5新特性

read uncommitted

    read committed

    repeatable read(默认)

    serializable

    [外链图片转存中...(img-8XeEl7By-1646324960050)]

  * timeout:超时时间

  (1)事务需要在一定时间内进行提交,如果不进行提交将会进行回滚

  (2)默认值为-1,表示永不超时

  (3)以秒为单位进行计算

  [外链图片转存中...(img-szPS1VpH-1646324960050)]

  * readOnly:是否只读

    (1)读:查询操作,写:添加、修改、删除操作

    (2)readOnly默认值为false,可以进行查询,添加、修改操作

    (3)可以认为将其设为true,设置为true后,只能进行查询操作

    [外链图片转存中...(img-hVdDURDj-1646324960051)]

  * rollbackFor:回滚

    设置出现那些异常进行回滚

  * norollbackFor:不回滚

    设置出现那些异常不进行回滚

    写法:属性=异常的类

  ### xml声明式事务管理

  1. 在spring配置文件中,配置事务管理器

     [外链图片转存中...(img-eSDcbDZA-1646324960052)]

  2. 配置通知(事务)

     [外链图片转存中...(img-VsJjittJ-1646324960052)]

  3. 配置切入点(被增强的方法)和切面

      [外链图片转存中...(img-53QvBHrY-1646324960053)]

  4. 测试

      [外链图片转存中...(img-ob06z2Zr-1646324960054)]

  ### 完全注解开发

  1. 创建配置类

​ [外链图片转存中…(img-RYhNXEYy-1646324960055)]

[外链图片转存中…(img-LWp60pez-1646324960055)]

[外链图片转存中…(img-RiqcK1vi-1646324960056)]

[外链图片转存中…(img-Aa75YO4i-1646324960057)]

[外链图片转存中…(img-Ai3WxsBM-1646324960057)]

[外链图片转存中…(img-7Mr0PJRI-1646324960058)]

测试:

[外链图片转存中…(img-wQOPDZCi-1646324960059)]

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值