Spring(2)

目录

一、使用注解开发

1.1 主要注解 

 1.2 衍生注解

1.3 xml与注解

二、使用Java的方式配置Spring

三、代理模式

3.1 静态代理 

3.1.1 角色分析

3.1.2 代码步骤

 3.1.3 优点

 3.1.4 缺点

 3.2 动态代理

3.2.1 代码步骤

四、AOP

4.1 使用Spring的API接口

4.2 使用自定义类来实现

4.3 使用注解实现

五、整合Mybatis

5.1 步骤

5.2 mybatis-spring

六、事务

6.1 事务ACID原则

6.2 Spring中的事务管理

6.2.1 声明式事务实现步骤


一、使用注解开发

1.1 主要注解 

@Component:组件,放在类上,说明这个类被Spring管理了,就是bean

@Value:配置属性值

@Scope:设置作用域

 1.2 衍生注解

@Component有几个衍生注解,在web开发中,会按照mvc三层架构分层!

  • Dao【@Repository】
  • Service【@Service】
  • Controller【@Controller】

 这四个注解功能是一样的,都是代表将某个类注册到Spring中,装配bean

1.3 xml与注解

  • xml更加万能,适用于任何场合!
  • 注解不是自己的类使用不了,维护相对复杂!
  • xml与注解最佳实践:xml用来管理bean,注解只负责完成属性的注入

二、使用Java的方式配置Spring

 我们现在要完全不使用Spring的xml配置了,全权交给Java来做!

@Configuration:代表这是一个配置类,作用等同于beans.xml

 

三、代理模式

 

3.1 静态代理 

3.1.1 角色分析

  • 抽象角色:一般会使用接口或抽象类来解决
  • 真实角色:被代理的角色
  • 代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作
  • 客户:访问代理对象的人

3.1.2 代码步骤

1、接口

 

2、真实角色

3、代理角色 

 4、客户端访问代理角色

 3.1.3 优点

  •  可以使真实角色的操作更加纯粹!不用去关注一些公共的业务
  • 公共业务就交给代理角色!实现了业务的分工!
  • 公共业务发生扩展的时候,方便集中管理!

 3.1.4 缺点

  • 一个真实角色就会产生一个代理对象,代码量会翻倍,开发效率变低

 3.2 动态代理

  • 动态代理和静态代理角色一样
  • 动态代理类是动态生成的,不是我们直接写好的
  • 动态代理分为两大类:基于接口的动态代理,基于类的动态代理
    • 基于接口:JDK动态代理
    • 基于类:cglib

3.2.1 代码步骤

 1、接口

2、真实对象

3、 InvocationHandler(自动生成代理类)

4、客户端访问

 

四、AOP

使用AOP织入,需要导入一个依赖包

有三种方式实现AOP织入

4.1 使用Spring的API接口

4.2 使用自定义类来实现

主要是切面定义

4.3 使用注解实现

五、整合Mybatis

5.1 步骤

1、导入相关jar包

  • Junit
  • Mybatis
  • Mysql
  • Spring相关
  • aop织入
  • Mybatis-spring【新知识点】

2、编写配置文件

3、测试

简单回顾mybatis

1、编写实体类

2、编写核心配置文件

3、编写接口(Mapper)

4、编写Mapper.xml

5、测试

5.2 mybatis-spring

1、编写数据源配置

2、sqlSessionFactory【方式一】

3、sqlSessionTemplate【方式二】

 

4、给接口加实现类

【方式一】sqlSessionFactory

【方式二】 sqlSessionTemplate

5、将写的实现类注入给Spring

6、测试

六、事务

  • 把一组业务当做一个业务来做,要么都成功,要么都失败
  • 确保数据的完整性和一致性

6.1 事务ACID原则

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

6.2 Spring中的事务管理

  • 声明式事务:AOP 
  • 编程式事务:需要在代码中进行事务的管理(不推荐)

6.2.1 声明式事务实现步骤

1、配置声明式事务

2、 配置事务通知,给哪些方法配置事务 ; 配置事务的传播特性:propagation

 3、结合AOP实现事务的织入

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

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

相关文章

YoloV8改进策略:卷积篇|ACConv2d模块在YoloV9中的创新应用与显著性能提升|简单易用_即插即用

摘要 在本文中,我们创新性地将ACConv2d模块引入到YoloV9目标检测模型中,通过对YoloV9中原有的Conv卷积层进行替换,实现了模型性能的大幅提升。ACConv2d模块基于不对称卷积块(ACB)的设计思想,利用1D非对称卷…

sql server导入mysql,使用工具SQLyog

概述 需要将sql server的数据导入到mysql中,由于2种数据库存在各种差异,比如表字段类型就有很多不同,因此需要工具来实现。 这里使用SQLyog来实现。 SQLyog安装 安装过程参考文档:https://blog.csdn.net/Sunshine_liang1/article/…

c++,python实现网络爬虫

前言: 社交网络中用户生成的海量数据,社交网络数据的多样性和复杂性 如何高效地从海量的数据中获取和处理我们需要的信息资源? 该微博爬虫能够从社交网络平台中地提取文本、图片和用户之间的转发关系,并将这些数据结构化存储到…

【图论】Tarjan算法(强连通分量)

一、Tarjan算法简介 Tarjan算法是一种由美国计算机科学家罗伯特塔杨(Robert Tarjan)提出的求解有向图强连通分量的线性时间的算法。 二、强连通分量的概念 在有向图 G G G 中,如果任意两个不同的顶点相互可达,则称该有向图是强…

Android高级UI --- canvas

前言 我们先来聊聊,在我们生活中如何绘制一张如下的图。 我们需要两样东西来绘制: 一张纸(Android 中的 canvas):用来承载我们绘制的内容。一支笔(Android 中的 paint):负责绘制内…

(QT-UI)十四、在时间轴上绘制一段段时间片

本系列预计实现 ①刻度上方文字显示, ②时间轴拖动效果, ③时间轴刻度缩放, ④时间轴和其他控件联动显示, ⑤鼠标放置到时间轴,显示具体时间。 ⑥通过定时器,实时更新时间轴 ⑦时间轴上绘制时间片 完…

linux系统使用 docker 来部署web环境 nginx+php7.4 并配置称 docker-compose-mysql.yml 文件

Docker是一个开源的容器化平台,旨在简化应用程序的创建、部署和管理。它基于OS-level虚拟化技术,通过将应用程序和其依赖项打包到一个称为容器的标准化单元中,使得应用程序可以在任何环境中快速、可靠地运行。 Docker的优势有以下几个方面&a…

重发布实验

一、实验拓扑 二、实验需求 1.如图搭建网络拓扑,所有路由器各自创建一个环回接 口,合理规划IP地址 2.R1-R2-R3-R4-R6之间使用OSPF协议,R4-R5-R6之间使用 RIP协议 3.R1环回重发布方式引入OSPF网络 4.R4/R6上进行双点双向重发布 5.分析网络中出…

VScode | 我想推荐这些插件,好用

系列文章目录 本系列文章主要分享作位前端开发的工具之------VScode的使用分享。 VScode | 我的常用插件分享_vscode 别名跳转-CSDN博客 VScode | 我的常用代码片段,提升开发速度-CSDN博客 VScode | 我会设置文件夹右键用VScode打开_vscode右键打开文件夹-CSDN博…

如何使用ssm实现基于ssm的“游侠”旅游信息管理系统

TOC ssm190基于ssm的“游侠”旅游信息管理系统jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化&#x…

RocketMQ~刷盘机制、主从复制方式、存储机制

刷盘机制 生产者发布MQ给Brocker,Brocker在存储这些数据的时候,需要进行刷盘,分为同步刷盘和异步刷盘。 在同步刷盘中需要等待一个刷盘成功的ACK,同步刷盘对MQ消息可靠性来说是一种不错的保障,但是性能上会有较大影响…

GoWeb 设置别名和多环境配置

别名 vite.config.ts中添加代码如下即可 //设置别名resolve: {alias: {"": path.resolve(process.cwd(),"src"),//用替代src}}随后即可使用 配置多环境 vite.config.ts中添加代码如下 envDir: ./viteenv,//相对路径随后在项目根目录创建对应的viteenv…

【游戏速递】 小猪冲刺:萌动指尖的极速挑战,小虎鲸Scratch资源站独家献映!

在线玩:Scratch小猪冲刺:全新挑战的几何冒险游戏-小虎鲸Scratch资源站 想象一下,一群憨态可掬的小猪,穿上炫酷的装备,踏上了追逐梦想的赛道。它们或跳跃、或滑行,灵活躲避各种障碍,只为那终点的…

Web API 学习笔记 第四弹

1.时间戳 获取时间戳的方法①date.getTime()②new Date() 2.定时器 console.log(111)setTimeout(()>{console.log(222)},1000)console.log(333) console.log(111)setTimeout(()>{console.log(222)},0)console.log(333) 这两段代码打印结果分别是? 第一段 …

【STM32】驱动OLED屏

其实我没买OLED屏哈哈哈,这个只是学习了,没机会实践。 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 显示原理 2 读写方式:8080并口 2.1 支持的指令类型 2.2 …

【Tesla FSD V12的前世今生】从模块化设计到端到端自动驾驶技术的跃迁

自动驾驶技术的发展一直是全球汽车行业的焦点,Tesla的Full-Self Driving(FSD)系统凭借其持续的技术革新和强大的数据支持,在这个领域独占鳌头。本文将深入介绍Tesla FSD V12的演进历史,从自动驾驶的基础概念入手&#…

数据结构-时间、空间复杂度-详解

数据结构-时间复杂度-详解 1.前言1.1数据结构与算法1.2如何衡量一个算法的好坏1.3复杂度 2.时间复杂度2.1是什么2.2大O符号只保留最高阶项不带系数常数次为O(1) 2.3示例示例2.1示例2.2示例2.3示例2.4 2.4题目 3.空间复杂度3.1是什么3.2大O符号3.3示例示例1示例2示例3示例4 4.题…

2024-08-26 更改驱动器号导致的软件崩溃问题

​ 在给电脑重新分盘时,想把 Software 盘的驱动器号(E:)改为对应的首字母 S,因此导致了所有软件崩溃。主要原因是软件主要依据驱动器号识别位置,而更改驱动器号后,并不会将软件设置的驱动器号一并更改。 ​…

Docker 的简介

Docker 的简介 为什么会有 Docker环境一致性问题提高资源利用率和可移植性快速部署和伸缩简化管理和维护版本控制和回滚 Docker 的历史dotCloud 时代(2010年前)Docker 诞生(2010-2013)快速发展与开源(2013-2014&#x…

车载通信框架--- 以太网重连Port口相关思考

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…