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,一经查实,立即删除!

相关文章

8月15日

上午开会 rag继续 异构大模型 狂野飙车9之前的账号终于找回来了 下午 关于minicpm的代码 minicpm-v 大模型预训练论文&方法总结 - 知乎 (zhihu.com) 这里有讲解的代码 发现还是先推荐把llava的掌握好了之后再看minicpm 多模态大模型LLaVA模型讲解——transformers源…

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/…

SQL Server事务日志文件过大的处理方法

正常情况下事务日志文件过大时可以右点数据库--任务--收缩--文件--选择日志进行收缩,从而达到减小事务日志文件的目的。 但在有些情况下没有达到执行收缩条件,无法执行收缩: 1、数据库恢复模式 为 完整恢复模式(FULL&#xff09…

c++,python实现网络爬虫

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

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

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

Android高级UI --- canvas

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

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

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

如何上传NPM包:一步步指南

在JavaScript和Node.js开发中,NPM(Node Package Manager)是一个广泛使用的包管理工具。通过NPM,我们可以方便地管理项目中的依赖库,也可以将自己的代码打包发布给其他开发者使用。这篇文章将详细介绍如何将你自己的代码…

电商API 接口的发展会对传统行业产生哪些影响

API 接口的发展会给传统行业带来多方面的影响,具体如下: 提升运营效率与生产力 优化业务流程:以制造业为例,通过 API 接口可将生产设备、管理系统等进行连接,实现设备数据的自动采集与传输,实时监控生产状态…

004、架构_配置文件_总览

配置文件用来配置各模块运行时使用的参数,GoldenDB数据库的配置文件以及文件说明参见 下表: 模块/服务器名称配置文件文件路径配置文件功能CNproxy.ini os.ini dis_info_load.ini$HOME/etc/proxy.ini 配置 CN 运行参数。 os.ini 配置链路信息 ,以及模块启动信 息。 dis_info…

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…

【持续更新】nPlayer Premium v1.7.7.7-191219安卓知名播放器最新免费高级修改版

nPlayer,也是安卓上一个非常强大的播放器。 ▨ 高级版亮点功能: • 多语言字幕支持:无论是电影还是电视剧,都能轻松添加多种语言字幕,让观影体验更上一层楼 • Chromecast 投屏:借助 Chromecast&#xff0…

工商业光伏:从传统行业迈向数字化的第一步

现在每个行业都需要和互联网挂上关系,光伏行业也不例外,从传统的行业思维迈向数字化,户用光伏是比较成功的,户用光伏一直都是代理模式,头部平台会提供一个平台系统来管理下面代理商的业务或者电站,但是呢&a…

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资源站 想象一下,一群憨态可掬的小猪,穿上炫酷的装备,踏上了追逐梦想的赛道。它们或跳跃、或滑行,灵活躲避各种障碍,只为那终点的…