秋招突击——第四弹——Java的SSN框架快速入门——Spring(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中进行读取。
在这里插入图片描述
在这里插入图片描述

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

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

  • 创建对应的properties
    在这里插入图片描述
  • 在配置中申请一个新的命名空间context
    • 直接复制对应的两行,然后修改对应关键字即可

在这里插入图片描述

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

在这里插入图片描述

  • 运行效果如下

在这里插入图片描述

容器

创建容器

在这里插入图片描述

获取bean

在这里插入图片描述

BeanFactory

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

在这里插入图片描述

容器总结

  • 容器接口

在这里插入图片描述

  • Bean相关
    在这里插入图片描述

  • 注入相关
    在这里插入图片描述

注解

注解开发对定义bean

在这里插入图片描述

  • 衍生注解

在这里插入图片描述
在这里插入图片描述

纯注解开发

  • 使用congfig类替代配置xml
    在这里插入图片描述

在这里插入图片描述

  • 创建容器的方式也改变了,是通过注解创建容器,不是通过配置创建的容器的。
    在这里插入图片描述

Bean管理

Bean作用范围

在这里插入图片描述

Bean生命周期

在这里插入图片描述

注解开发依赖注入

  • 使用注解进行自动装配
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

  • 简单类型如何进行注入

在这里插入图片描述

  • 如何加载外部的properties中的属性值
    在这里插入图片描述

第三方bean管理

第三方bean管理

在这里插入图片描述

  • 使用独立的配置类加入核心配置
    在这里插入图片描述
    在这里插入图片描述
第三方bean注入

在这里插入图片描述

注解开发总结

在这里插入图片描述

Spring整合

整合mybatis

*

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

在这里插入图片描述

  • Mybatis主要是负责SqlSessionFactory对象的

在这里插入图片描述
在这里插入图片描述

整合Junit

在这里插入图片描述

AOP

AOP核心概念

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

具体概念如下
在这里插入图片描述

在这里插入图片描述

AOP入门案例

*

  • 结合之前的代码进行分析,主要是制作共性功能,也就是通知类和通知的制作
  • 具体定义流程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

AOP工作流程

在这里插入图片描述

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

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

    • 目标对象无法直接完成工程,需要对其进行功能回填,通过原始对象的代理对象实现。
代理模式补充
设计模式
  • 开闭原则
    • 对扩展开放,对修改关闭
  • 里氏替换原则
    • 调用一个父类的方法可以成功,那么替换成子类的调用也应该可以完全成功
结构型模式
接口模式
  • 如果要求传入的接口是A接口,但是传入的是B接口,需要创建一个能够将B接口转为A接口的东西。
    *
  • 这里是想用线程调用接口runnable的,但是这里实现的是callable接口,就需要创建一个类,将callable转成runnable。
  • 下述是实现了runnable接口,然后转成在run函数里面调用了runnable接口的call函数
    *
    在这里插入图片描述
代理模式
  • 调试器是将接口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切入点表达式

语法格式

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

  • 书写技巧
    • 切入点描述通常使用接口,主要是为了降低耦合性,不要指定具体的描述类
  • 在这里插入图片描述

AOP的通知类型

  • 重点是环绕通知around,通过该通知能够实现前置通知和后置通知。
    在这里插入图片描述
  • 必须要增加对于原始方法的调用,实现隔离操作。
  • 因为没有办法预知原始方法是否会抛出异常,所以需要处理异常。
    在这里插入图片描述
    在这里插入图片描述
测量业务层接口万次执行效率
  • 在cofig中摊开AOP的注解文件
    在这里插入图片描述
  • 创建对应的AOP文件,同时定义方法
    • 这个方法有一个问题,就是没有办法根据输出定位到具体的方法,所以需要输出具体around方法的名称。在这里插入图片描述
  • 最终修改如下

在这里插入图片描述

AOP通知获取数据

在这里插入图片描述
在这里插入图片描述

获取参数

在这里插入图片描述

使用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;}

在这里插入图片描述

获取返回值
  • 下述参数比较特殊,需要在配置中进行说明
    • 第一个参数必须是JointPoint
      在这里插入图片描述
      在这里插入图片描述
获取异常

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

AOP总结

在这里插入图片描述

  • 切入点的描述
    在这里插入图片描述
  • 切入点描述的技巧

在这里插入图片描述

  • 通知的五种类型

在这里插入图片描述

  • 获取参数的相关方法

在这里插入图片描述

Spring事物

Spring事物简介

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置方法
  • 声明事物的属性
    在这里插入图片描述
  • 定义事物管理器
    • 外部资源注入

在这里插入图片描述

  • 到spring的配置文件中,使用注解注入
    在这里插入图片描述
方法总结

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Spring事物角色

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Spring事物属性

事物配置

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

事物传播行为

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/21650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C、C++编译工具】CLion工具介绍与安装

一、问题 最近突发奇想想学学最开始接触的语言C&#xff0c;之前大学的时候用的更多的工具还是VC&#xff0c;工作后慢慢接触了CLion&#xff0c;跟pycharm其实差不多&#xff0c;都是集成开发环境&#xff08;IDE&#xff09; 解释&#xff1a;什么是 IDE&#xff1f; 根据计…

2024年5月 | deepin 深度应用商店-应用更新记录

新增应用 序号应用名称deepin 系统版本应用分类应用类型1HitPaw Watermark Removerdeepin V23图形图像wine2PDF to DOCX转换器deepin V23网络应用linux3天工 AIdeepin V20.9效率办公linux4稻壳阅读deepin 20.9 deepin V23效率办公linux5讯飞星火deepin V20.9效率办公linux6文…

扩散模型的技术原理和应用价值

引言 一、扩散模型的基本概念 扩散模型(Diffusion Models)是一种基于概率论的生成模型&#xff0c;最初源自物理学中的扩散过程理论&#xff0c;比如墨水在水中的扩散过程。在机器学习领域&#xff0c;这一概念被创造性地应用于数据生成任务&#xff0c;特别是图像和声音的合成…

Proxmox Backup Server 命名空间使用

作者&#xff1a;田逸&#xff08;formyz&#xff09; Proxmox Backup Server&#xff08;一下统称PBS&#xff09;从2.2版本开始&#xff0c;新增了命名空间这样一个功能。这个功能大大便利了多Proxmox VE集群或者单节点备份&#xff0c;在以前PBS版本中&#xff0c;如果有多个…

HTML旋转照片盒子

效果图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible" content…

世界的本质是旋转(9) 利用声波传输mFSK多音调频文本

在上一篇文章中 &#xff0c;主要介绍的是使用专用的业余无线电设备传输调相波形。 对于买不起SDR设备的学生来说&#xff0c;可以使用这篇文章介绍的思路&#xff0c;使用声卡的数据线传输IQ路的基带数据。线路输入的好处&#xff1a; 不经过空气的媒介&#xff0c;波形的本…

江苏省汽车及零部件产业协作配套对接会在苏州举行

5月28日&#xff0c;江苏省汽车及零部件产业协作配套对接会暨“百场万企”大中小企业融通对接活动在苏州举办。本次活动以“深化整零协作&#xff0c;促进大中小企业融通发展”为主题&#xff0c;由江苏省工业和信息化厅、中国中检所属中国汽车工程研究院股份有限公司&#xff…

分享7个手机上堪称神器却鲜为人知的小众宝藏软件

分享7个手机上堪称神器却鲜为人知的小众宝藏软件&#xff0c;保证大家用过就舍不得卸载~ 1.志愿大师 马上就是高考季了&#xff0c;高考完的同学如果不知道该如何选专业&#xff0c;可以用这个软件来分析各个大学和专业设置等信息。 志愿大师是一款专为高考后学生设计的高效辅…

Others - 网友都是些人才,哈哈哈哈

感谢万能的网友们&#xff01; 原本枯燥的知识&#xff0c;在网友生动形象的表达下&#xff0c;也能简单易懂&#xff0c;哈哈哈哈

Prometheus+Altermanager实现钉钉告警

PrometheusAltermanager实现钉钉告警 Prometheus和Altermanager的安装这里就不赘述了&#xff0c;我之前的文章有写到 不记得的小伙伴可以去看看Prometheus和Altermanager的安装使用 直接开始上操作 下载钉钉并打开&#xff0c;先创建一个接收告警信息的钉钉群 添加一个自定…

【Nacos_bugs】java.lang.IllegalStateException: Failed to load ApplicationContext

报错原因 找不到配置文件。 Bug 排查 如果使用 Nacos 管理配置文件&#xff0c;需要检查本地 bootstrap.yml 配置是否出现问题&#xff1a; 检查点&#xff1a; 检查 Nacos 服务的地址有没有配置错误&#xff0c;如上图 ①&#xff0c;格式严格为 IP:端口号" 检查 D…

Ant Design Vue Pro流程分析记录

一、基本介绍 Ant Design Vue Pro提供了一套完整的解决方案&#xff0c;包括路由、状态管理、UI组件库、HTTP请求封装等&#xff0c;方便开发者快速搭建和维护企业级应用。 二、官网地址 Ant Design Pro of Vue 三、下载及安装 推荐使用Yarn 四、文件分布及说明 dist&#xf…

常见Rabbitmq面试题及答案总结

1、 什么是 rabbitmq 釆用AMQP高级消息队列协议的一种消息队列技术撮大的特点就是消费并不需要 确保提供方存在,实现了服务之间的高度解耦 2、 为什么要使rabbitmq &#xff08;1&#xff09; 在分布式系统下具备异步&#xff0c;削峰&#xff0c;负载均衡等一系列高级功能&…

企业百度百科如何修改

百度百科是一个可以让我们快速的了解一个企业情况的地方&#xff0c;同时也让我们的企业展示了什么&#xff0c;还有哪些是可以做的。 注册与登录 首先&#xff0c;你需要注册一个百度账号&#xff0c;并通过邮箱或手机进行验证。登录后&#xff0c;可以开始创建或编辑百度百科…

Leetcode - 周赛400

目录 一&#xff0c;3168. 候诊室中的最少椅子数 二&#xff0c;3169. 无需开会的工作日 三&#xff0c;3170. 删除星号以后字典序最小的字符串 四&#xff0c;3171. 找到按位与最接近 K 的子数组 一&#xff0c;3168. 候诊室中的最少椅子数 本题是一道模拟题&#xff0c;直…

归并排序法

归并排序法是典型的分治算法应用&#xff0c;1946年由冯.诺伊曼发明。 算法思路&#xff1a;归并排序算法有两个基本操作&#xff0c;一是分&#xff0c;也就是把原数组划分成两个子数组的过程&#xff0c;另一个是治&#xff0c;它将两个有序数组合并成一个更大的有序数组。 …

基于小波区间相关的信号降噪方法(MATLAB 2021B)

在我们处理信号过程中最重要的任务就是找到信号隐藏的规律和信号的特征。常用的傅里叶分析法只能用于在时间域或者频率域上分析信号&#xff0c;而通常的数据会在时间域和频率域均有特征。而小波分析是继傅里叶分析之后的一大突破性创新&#xff0c;也是近年来在学术界非常热门…

扩散世界模型已训练出赶超人类的智能体?

论文标题&#xff1a; Diffusion for World Modeling:Visual Details Matter in Atari 论文作者&#xff1a; Eloi Alonso, Adam Jelley, Vincent Micheli, Anssi Kanervisto, Amos Storkey, Tim Pearce, Franois Fleuret 项目地址&#xff1a; https://github.com/eloial…

基于EBAZ4205矿板的图像处理:10gamma变换

基于EBAZ4205矿板的图像处理&#xff1a;10gamma变换 项目全部文件 会上传项目全部文件&#xff0c;如果没传&#xff0c;可以私信催我一下&#xff0c;最近太忙了 先看效果 我的项目中的gamma的变换系数为2.2&#xff0c;是会让图像整体变暗的&#xff0c;看右图说明我的ga…

CPVT(ICLR 2023)论文解读

paper&#xff1a;Conditional Positional Encodings for Vision Transformers official implementation&#xff1a;GitHub - Meituan-AutoML/CPVT 存在的问题 位置编码的局限性&#xff1a;传统Transformer中的绝对位置编码&#xff08;无论是可学习的还是固定的&#xff…