秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)

作者 : admin 本文共3244个字,预计阅读时间需要9分钟 发布时间: 2024-06-3 共2人阅读

文章目录

    • 前言
    • 其他
      • Spring加载properties
    • 容器
      • 创建容器
      • 获取bean
      • BeanFactory
      • 容器总结
    • 注解
      • 注解开发对定义bean
      • 纯注解开发
      • Bean管理
        • Bean作用范围
        • Bean生命周期
      • 注解开发依赖注入
      • 第三方bean管理
        • 第三方bean管理
        • 第三方bean注入
      • 注解开发总结
    • Spring整合
      • 整合mybatis
      • 整合Junit
    • AOP
      • AOP核心概念
      • AOP入门案例
      • AOP工作流程
        • AOP核心概念
        • 代理模式补充
          • 设计模式
          • 结构型模式
            • 接口模式
            • 代理模式
      • AOP切入点表达式
          • 语法格式
      • AOP的通知类型
        • 测量业务层接口万次执行效率
      • AOP通知获取数据
        • 获取参数
        • 获取返回值
        • 获取异常
      • 案例——百度网盘密码数据兼容处理
      • AOP总结
    • Spring事物
      • Spring事物简介
        • 设置方法
        • 方法总结
      • Spring事物角色
      • Spring事物属性
        • 事物配置
        • 实例:转账业务追加日志
        • 事物传播行为

前言

  • 直接截图,不用自己一个一个敲,怎么快怎么来,然后代码项目,自己把他注释掉,自己在敲一遍。

其他

Spring加载properties

替换配置中value值,从properties中进行读取。
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(1)

  • 按照下述最标准的格式进行书写,可以同时类路径下方的所有的文件

<context:property-placeholder location="classpath😗.properties” system-properties-mode=“NEVER”/>*

  • 创建对应的properties
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(2)
  • 在配置中申请一个新的命名空间context
    • 直接复制对应的两行,然后修改对应关键字即可

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(3)

  • 使用属性占位符读取properties中的属性
    • 使用和properties同样名称的jdbc进行索引即可

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(4)

  • 运行效果如下

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(5)

容器

创建容器

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(6)

获取bean

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(7)

BeanFactory

  • BeanFactory是ApplicationContext最顶级的接口创建对象全是延迟加载

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(8)

容器总结

  • 容器接口

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(9)

  • Bean相关
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(10)

  • 注入相关
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(11)

注解

注解开发对定义bean

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(12)

  • 衍生注解

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(13)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(14)

纯注解开发

  • 使用congfig类替代配置xml
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(15)

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(16)

  • 创建容器的方式也改变了,是通过注解创建容器,不是通过配置创建的容器的。
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(17)

Bean管理

Bean作用范围

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(18)

Bean生命周期

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(19)

注解开发依赖注入

  • 使用注解进行自动装配
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(20)
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(21)

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(22)

  • 简单类型如何进行注入

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(23)

  • 如何加载外部的properties中的属性值
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(24)

第三方bean管理

第三方bean管理

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(25)

  • 使用独立的配置类加入核心配置
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(26)
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(27)
第三方bean注入

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(28)

注解开发总结

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(29)

Spring整合

整合mybatis

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(30)

  • 核心对象是SqlSessionFactoryBuilder,这个工厂用来用来创建不同的session链接,主要设置来自于配置文件

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(31)

  • Mybatis主要是负责SqlSessionFactory对象的

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(32)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(33)

整合Junit

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(34)

AOP

AOP核心概念

  • 面向切面编程,Aspect Oriented Programming,面向切面编程,一种编程范式,知道开发者组织程序结构
  • 作用:在不惊动原始设计的基础上,为其进行功能增强
  • Spring理念:无入侵式编程,并没有改变代码,但是代码的功能发生了变化

具体概念如下
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(35)

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(36)

AOP入门案例

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(37)

  • 结合之前的代码进行分析,主要是制作共性功能,也就是通知类和通知的制作
  • 具体定义流程
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(38)
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(39)
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(40)
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(41)
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(42)

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(43)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(44)

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(45)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(46)

AOP工作流程

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(47)

  • 获取bean执行方法
    • 获取bean,调用方法并执行,完成操作
    • 获取的bean是代理对象时
AOP核心概念
  • 目标对象

    • 原始功能去掉共性功能对应的类产生的对象,这种对象是无法直接完成最终工作的
  • 代理

    • 目标对象无法直接完成工程,需要对其进行功能回填,通过原始对象的代理对象实现。
代理模式补充
设计模式
  • 开闭原则
    • 对扩展开放,对修改关闭
  • 里氏替换原则
    • 调用一个父类的方法可以成功,那么替换成子类的调用也应该可以完全成功
结构型模式
接口模式
  • 如果要求传入的接口是A接口,但是传入的是B接口,需要创建一个能够将B接口转为A接口的东西。
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(48)
  • 这里是想用线程调用接口runnable的,但是这里实现的是callable接口,就需要创建一个类,将callable转成runnable。
  • 下述是实现了runnable接口,然后转成在run函数里面调用了runnable接口的call函数
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(49)
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(50)
代理模式
  • 调试器是将接口A转成接口B,但是代理模式是在接口A外面再套一层壳,为了执行权限检查等特定功能
    • 下述就是对接口A增加了权限检查的功能
  • 编程原则:
    • 职责清晰:一个类只负责一件事
    • 易于测试:一次只检查一个功能
public class AProxy implements A {
    private A a;
    public AProxy(A a) {
        this.a = a;
    }
	public void a() {
   		 if (getCurrentUser().isRoot()) {
       		 this.a.a();
    	} else {
        	throw new SecurityException("Forbidden");
    }
	}
}

常见的代理方式

  • 远程代理

    • 本地的调用者持有的接口实际上是一个代理,这个代理负责把对接口的方法访问转换成远程调用,然后返回结果。Java内置的RMI机制就是一个完整的远程代理模式。
  • 虚代理

    • 它让调用者先持有一个代理对象,但真正的对象尚未创建。如果没有必要,这个真正的对象是不会被创建的,直到客户端需要真的必须调用时,才创建真正的对象
    • JDBC的连接池返回的JDBC连接(Connection对象)就可以是一个虚代理,即获取连接时根本没有任何实际的数据库连接,直到第一次执行JDBC查询或更新操作时,才真正创建实际的JDBC连接
      后面有点负责,不过先跳过,先弄明白这章再说

AOP切入点表达式

语法格式

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(51)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(52)

  • 下述是两种写法,一种是接口写法,还有一种是实现类的写法

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(53)

  • 下述.是零个或者多个,但是*是必有一个
    • 第三种子类说明是不常用的

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(54)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(55)

  • 书写技巧
    • 切入点描述通常使用接口,主要是为了降低耦合性,不要指定具体的描述类
  • 秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(56)

AOP的通知类型

  • 重点是环绕通知around,通过该通知能够实现前置通知和后置通知。
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(57)
  • 必须要增加对于原始方法的调用,实现隔离操作。
  • 因为没有办法预知原始方法是否会抛出异常,所以需要处理异常。
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(58)
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(59)
测量业务层接口万次执行效率
  • 在cofig中摊开AOP的注解文件
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(60)
  • 创建对应的AOP文件,同时定义方法
    • 这个方法有一个问题,就是没有办法根据输出定位到具体的方法,所以需要输出具体around方法的名称。秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(61)
  • 最终修改如下

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(62)

AOP通知获取数据

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(63)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(64)

获取参数

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(65)

使用before获取参数,传入JointPoint对象,进行获取

@Before("pt()")
public void before(JoinPoint jp){
    Object[] args = jp.getArgs();
    System.out.println(Arrays.toString(args));
    System.out.println("before advice...");

}

输入校验

  • 可以获取参数,并进行检查,然后对参数进行处理,不需要对于每一个参数都执行相应的操作
 @Around("pt()")
    public Object around(ProceedingJoinPoint pjp) {
        Object[] args = pjp.getArgs();
        System.out.println(Arrays.toString(args));
        args[0] = 666;
        System.out.println(Arrays.toString(args));
        
        Object ret = null;
        try {
            ret = pjp.proceed(args);
        } catch (Throwable t) {
            t.printStackTrace();
        }
        return ret;
    }

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(66)

获取返回值
  • 下述参数比较特殊,需要在配置中进行说明
    • 第一个参数必须是JointPoint
      秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(67)
      秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(68)
获取异常

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(69)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(70)

案例——百度网盘密码数据兼容处理

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(71)

AOP总结

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(72)

  • 切入点的描述
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(73)
  • 切入点描述的技巧

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(74)

  • 通知的五种类型

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(75)

  • 获取参数的相关方法

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(76)

Spring事物

Spring事物简介

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(77)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(78)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(79)

设置方法
  • 声明事物的属性
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(80)
  • 定义事物管理器
    • 外部资源注入

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(81)

  • spring的配置文件中,使用注解注入
    秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(82)
方法总结

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(83)

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(84)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(85)

Spring事物角色

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(86)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(87)

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(88)

Spring事物属性

事物配置

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(89)

  • 默认一般只有运行时异常才会回滚,其他不会回滚,所以需要加上
实例:转账业务追加日志

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(90)

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(91)

事物传播行为

秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(92)
秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)插图(93)

本站无任何商业行为
个人在线分享 » 秋招突击——第四弹——Java的SSN框架快速入门——Spring(2)
E-->