Spring(2)

news2024/9/27 6:47:56

目录

一、使用注解开发

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.coloradmin.cn/o/2077385.html

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

相关文章

云计算实训36——mysql镜像管理、同步容器和宿主机时间、在容器外执行容器内命令、容器的ip地址不稳定问题、基础镜像的制作、镜像应用

一、线上考试系统的数据虚拟化技术部署 1.部署前段服务器 步骤一:将资源上传到服务器 将dist.zip上传给服务器 下载unzip的包 yum -y install unzip 解压 unzip dist.zip 步骤二:创建基础容器在服务器上 启动服务 systemctl start docker.servic…

LVS部署——DR集群

目录 一、LVS—DR工作原理 二、LVS-DR数据流向 三、LVS-DR模式特点和优缺点 3.1、特点 3.2、优缺点 四、LVS-DR中的ARP问题 4.1、IP地址冲突 4.2、第二次访问请求失败 五、部署LVS-DR集群 5.1、实验准备 5.2、配置负载调度器(192.168.20.15) …

SeaweedFS 分布式存储安装weed

下载Single Binary weed Start 官方推荐 https://github.com/seaweedfs/seaweedfs 下载 https://github.com/seaweedfs/seaweedfs/releases解压 single binary file weed or weed.exe. wget https://github.com/seaweedfs/seaweedfs/releases/download/3.72/darwin_amd64.…

【前端面试基础】计算机网络、浏览器、操作系统

计算机网络 一、网络协议与模型 什么是协议? 协议是指计算机系统中完成特定任务所必需的规则和约定,特别是数据传输和交换的规则和约定。OSI和TCP/IP是什么? OSI(开放式系统互连参考模型)是一种网络架构模型&#xf…

C#复习之索引器

知识点一:索引器基本概念 基本概念: 让对象可以像数组一样通过索引访问其中元素,使程序看起来更直观,更容易编写 知识点二:索引器语法 //value代表传入的值 知识点三:索引器的使用 知识点四&#xff1a…

大容量永磁同步电机转速电流双环PID控制MATLAB仿真模型

电气仔推送 模型简介 同步电机采用转速环PI控制,电流环PI控制,在电机转速300r/min,输出转矩为40000N.m时,电机的输出功率为1.25MW。模型各部分完整,电流输出正弦度好,谐波含量低。赠送建模说明文件&#…

PAT (Basic Level) Practice (中文)

1003 我要通过 通过观察不难发现在一个规律:P之前A的个数*P和T之间A的个数等于T之后A的个数答案才正确 总结一下如何才能答案正确? 1.必须只能有P,A,T这三种字符 2.P和T之间必须要有A 3.P之前A的个数*P和T之间A的个数等于T之…

【HTML】模拟消息折叠效果【附源代码】

文件结构 收起效果 展开效果 HTML部分 HTML部分定义了网页的结构和内容。 <!DOCTYPE html> 声明了文档类型和HTML版本。<html> 元素是所有其他HTML元素的父元素。<head> 元素包含了文档的元数据&#xff0c;如字符集、视口设置、标题和链接的样式表。<b…

高效又经济,乔拓云助力,快速上线功能全面的小程序解决方案

乔拓云模板化小程序开发费用 在当今数字化时代&#xff0c;小程序成为企业拓展市场的新利器。乔拓云平台提供模板化开发方案&#xff0c;让您的小程序能同时覆盖微信与百度&#xff0c;迅速触达更多用户。 选择乔拓云模板&#xff0c;无需从零开始设计&#xff0c;直接复用精美…

ssrf+redis未授权访问漏洞复现

目录 靶场搭建 报错问题解决 组合利用 使用goherus生成payload 靶场搭建 首先我们进入ubutuo拉取靶场 docker run -d -p 8765:80 8023/pikachu-expect:latest 报错问题解决 如果出现docker报错&#xff0c;靶场一直拉取不下来 解决办法&#xff1a;配置镜像加速器 vim /et…

二叉树中查找值为x的节点(递归查找)

一&#xff1a;前提 本文紧接此篇博客&#xff1a; 递归实现 前/中/后序 遍历二叉树 的详细讲解-CSDN博客 模型依旧为&#xff1a; 二&#xff1a;代码 三&#xff1a;递归展开 假设找3&#xff1a; 假设找 7,7不存在&#xff0c;最后返回NULL 左&#xff1a; 右&#xff1…

机器学习 第5章 神经网络

这里写目录标题 5.1 神经元模型5.2 感知机与多层网络5.3 误差逆传播算法5.4 其他常见神经网络5.4.1 RBF网络5.4.2 ART网络5.4.3 SOM网络5.4.4 级联相关网络 5.5 深度学习 5.1 神经元模型 神经网络是一种由神经元构成的计算模型&#xff0c;模拟了生物神经系统的工作原理。神经…

【MySQL】优化 - 深分页

深分页 问题优化方法子查询延迟关联游标 问题 就是查询偏移量过大的场景&#xff0c;会导致查询性能较低&#xff0c;例如 # MySQL 在无法利用索引的情况下跳过1000000条记录后&#xff0c;再获取10条记录 SELECT * FROM t_order ORDER BY id LIMIT 1000000, 10首先&#xff…

嵌入式:用J-Link Commander和J-Flash进行Flash编程的区别

相关阅读 嵌入式https://blog.csdn.net/weixin_45791458/category_12768532.html?spm1001.2014.3001.5482 J-Link Commander和J-Flash都是用于Flash编程的工具&#xff0c;但它们的功能和应用场景有所不同。以下是两者的区别&#xff1a; J-Link Commander: 类型: 命令行工…

.NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强

DevExpress XAF是一款强大的现代应用程序框架&#xff0c;允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计&#xff0c;开发人员可以选择内建模块&#xff0c;也可以自行创建&#xff0c;从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 在DevEx…

为什么说中医的本质是医“中”

日前&#xff0c;与一位懂中医的朋友朋友聊天&#xff0c;他言简意赅地指出“中医的本质就是医‘中’”。反思后总结如下&#xff0c;以飨读者&#xff0c;同时欢迎批评指正&#xff01; “中医的本质是医‘中’”强调了中医的核心在于其整体观和辩证方法。中医“中”的本质在于…

【OAuth2】为什么授权码模式更安全?为什么使用授权码比直接返回token更安全?

OAuth2 什么是OAuth2OAuth2的主要角色OAuth2的工作原理OAuth2的授权模式为什么授权码模式更安全&#xff1f; 什么是OAuth2 简而言之&#xff1a;安全的用你的其他账号登陆一个新网站&#xff08;甚至访问你在其他网站上存储的私密资源&#xff08;如头像、照片等&#xff09;…

金融大模型:数据治理与AI应用创新的新时代

金融大模型&#xff1a;数据治理与AI应用创新的新时代 前言金融数据治理与应用创新的新时代 前言 在当今数字化飞速发展的时代&#xff0c;金融行业也在经历着深刻的变革。金融大模型作为一种新兴的技术力量&#xff0c;正在逐渐改变着金融数据的治理和应用方式。它不仅为金融…

利用机器学习推动 vSOC 检测

我们讨论了汽车 API 如何成为智能移动生态系统的主要攻击媒介之一。与此相关的风险是显而易见的。如果威胁行为者能够大规模远程利用 API,他们将有能力损害品牌或提出赎金请求。当然,Splunk 平台的强大之处在于能够从任何数据大规模创建任何用例。在本博客中,我们将深入研究…

使用python基于fastapi发布接口(二)-连接mysql数据库查询数据

上一章在这里 操作 MySQL 数据库使用 mysql-connector-python 库 安装mysql-connector-python pip install mysql-connector-python 代码编写在原来代码基础上添加数据库连接配置 from typing import Union from fastapi import FastAPIapp = FastAPI(