当前位置: 首页 > article >正文

ssm-day06 ssm整合

从springMVC总结再回顾一下 60节

整合就是应用框架,并且把这个框架放到IOC容器中

web容器:装springMVC和controller相关的web组件

root容器:装业务和持久层相关的组件

子容器可以引用父容器中的组件,父容器不能调子容器

一个容器可以指定多个配置类

spring-aop不用导,因为他被spring-context依赖传递了

@Data 是 Java 中 Lombok 库提供的一个注解,用于简化实体类的代码编写。它通过自动生成常见的 getter、setter 方法、toString() 方法、equals()hashCode() 方法,减少手动编写样板代码的工作量。

logback日志输出 下去了解一下

实现一个接口WebMvcConfigurer作用提供对应的方法简化配置springmvc相关的组件

之前是自己new这么配置的,现在只需要加一个注解@EnableWebMvc,就会自动配handlerMapping handlerAdapter 和json处理器

第一个黄框可以进行静态资源处理,相当于二秘书

蓝框补全

业务层配置类:service、aop、tx

蓝框是对应mybatis的事务实现 

@EnableTransactionManagement代表开启事务注解支持

???怎么注入连接池

1.调用Bean方法 2.在形参列表上声明一个对应类型,由ioc容器帮我们注入连接池

实战找问题再总结

这段代码是用Java配置来设置Spring框架中的事务管理。让我们逐步解析这段代码:

1. @EnableTransactionManagement

这个注解是用来启用基于注解的事务管理支持的。当你在配置类上使用了 @EnableTransactionManagement,它会激活对 @Transactional 注解的支持,使得你可以在服务层的方法或类上使用 @Transactional 来声明事务边界。

2. ServiceJavaConfig 类

这是一个普通的Java配置类,用来替代传统的XML配置文件。你可以在这里定义各种bean、配置事务管理器、AOP切面等。根据Spring的约定,配置类通常带有 @Configuration 注解(虽然在这个例子中没有显示,但在实际应用中应该是有的),表明这是一个Spring配置类。

3. transactionManager 方法

这个方法负责创建并返回一个 TransactionManager 实例,具体来说是一个 DataSourceTransactionManager,这是Spring提供的用于管理JDBC数据源事务的实现。

参数
  • DataSource dataSource: 这个参数是通过依赖注入的方式传入的。通常,在Spring配置中,你会有一个 DataSource bean,这个方法将会自动接收到该bean作为参数。DataSource 是JDBC的一部分,表示连接到数据库的数据源。
方法体
  • 创建了一个 DataSourceTransactionManager 的实例,并设置了它的 dataSource 属性。
  • setDataSource(dataSource) 方法将给定的数据源与事务管理器关联起来,这样当有事务需要被管理时,DataSourceTransactionManager 就知道要使用哪个数据源来进行事务的操作,比如开始、提交或回滚事务。
返回值
  • 返回的是 TransactionManager 类型的对象,但实际上是 DataSourceTransactionManager 的实例。Spring的事务管理基础设施可以识别并使用这个对象来管理事务。

4. 隐含的Bean定义

虽然代码中没有显式地使用 @Bean 注解,但是根据Spring的规则,如果在一个 @Configuration 类中定义了一个非私有的、返回值不是 void 的方法,那么这个方法会被认为是一个bean定义工厂方法。也就是说,每次Spring容器启动时,都会调用 transactionManager 方法,并将其返回的对象注册为一个名为 transactionManager 的bean。

完整的例子

为了使这段代码更加完整,下面是一个可能的配置类的完整示例,包括 @Configuration@Bean 注解:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;@Configuration
@EnableTransactionManagement
public class ServiceJavaConfig {@Beanpublic PlatformTransactionManager transactionManager(DataSource dataSource) {DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();dataSourceTransactionManager.setDataSource(dataSource);return dataSourceTransactionManager;}// 其他bean定义...
}

在这个完整的例子中,@Configuration 告诉Spring这是一个配置类,而 @Bean 注解则明确指出了 transactionManager 方法应该被视为一个bean定义。这确保了Spring能够正确地处理和管理由这个方法返回的 PlatformTransactionManager 实例。

springIOC容器管理的组件都是为了全局复用的,用一次就丢掉的这种不用加(SqlSessionFactoryBuilder)

SqlSessionFactory会缓存mybatis的配置文件

整合包的作用就是提供各种FactoryBean,封装它们自己框架创建api的逻辑过程

这里核心就1个问题:怎么更加方便的拿到SqlSessionFactory 和 Mapper

持久层配置类:连接池、sqlSessionFactory、Mapper代理对象

第一种mybatis配置方式-xml中不再写数据库链接信息(连接池DruidDataSource和mapper接口的包指定)

保留mybatis-config.xml(分页插件、别名、驼峰映射)

@Configuration 配置类注解

@PropertySource("classpath:jdbc.properties")读取外部的配置文件

@Value 是 Java 中用于从配置文件、环境变量或直接赋值中注入值的注解,通常与 Spring 框架一起使用。它可以帮助开发者将外部配置的属性值注入到类的字段中,从而实现代码与配置的分离。

创建一个连接池

getObject方法会把返回的对象自动加入到ioc容器中

注释中是对象不是兑换

【弹幕】将SqlSessiongFactory放入,通过它得到SqlSession,然后得到Mapper代理对象,但这个步骤直接交给IOC容器去解决。咱们之间把两者放入IOC就行

zijiu阿大哥 这块真的懵 

第二种mybatis配置方式-完全配置类

去掉 mybatis-config.xml

不保留外部配置文件,全部mybatis的属性都在代码中设置

【弹幕】上节讲xml下怎么配置SqlSessionFactory和Mapper,一个配置类配置数据源,一个配置类配置SqlSessionFactory和Mapper

这个实操第一次失败,回头再搞

初始化配置类

/代表拦截所有

【美美回顾】Postman介绍

又又没了 无力回天了

四个接口的增删改查

前端对应的依赖管理的工具:npm

配置镜像 提高下载速度。但是我的npm版本更新不了??

讲义里面是错的,正确网址

#设置阿里镜像源
npm config set registry http://registry.npmmirror.com

package.json相当于maven里面的pom.xml文件,这里面表明它需要哪些第三方的依赖

ok呀 把之前的低版本删了也没解决  先过吧后面有需要再下载一次

R是统一结果集, 也就是统一你Controller返回的json格式

Slf4j 是 lombok 提供的接口,logback是实现。

就是一系列对象嵌套,感觉和之前的一对多多对一的那个知识点很香。ok实际上也就是返回一个R对象,R对象里面有一个pagebean

加两注解用于校验

前端向后端发请求的过程就是联调

后台可以添加设置,允许跨域访问,就是非同域进行访问

这个注解也可以加到指定接口上

这块过了快两月

先总结一下疑惑

1.代码中注解含义、作用

2.两个小测试没跟(每次idea就出错)

3.nodejs删了低版本的还没好

4.postman使用

5.初始化类原理?

ok磨磨唧唧开学了玩大了

相关文章:

ssm-day06 ssm整合

从springMVC总结再回顾一下 60节 整合就是应用框架,并且把这个框架放到IOC容器中 web容器:装springMVC和controller相关的web组件 root容器:装业务和持久层相关的组件 子容器可以引用父容器中的组件,父容器不能调子容器 一个容器…...

AI 编程助手 cursor的系统提示词 prompt

# Role 你是一名极其优秀具有10年经验的产品经理和精通java编程语言的架构师。与你交流的用户是不懂代码的初中生,不善于表达产品和代码需求。你的工作对用户来说非常重要,完成后将获得10000美元奖励。 # Goal 你的目标是帮助用户以他容易理解的…...

Ubuntu 下 nginx-1.24.0 源码分析 - ngx_process_options

ngx_process_options 声明在 src\core\nginx.c static ngx_int_t ngx_process_options(ngx_cycle_t *cycle); 定义在 src\core\nginx.c static ngx_int_t ngx_process_options(ngx_cycle_t *cycle) {u_char *p;size_t len;if (ngx_prefix) {len ngx_strlen(ngx_prefix);p …...

ollama如何安全卸载,解决Ollama unins000.msg is missing

春节后在本地电脑安装了Ollama的客户端,每次开机自启,影响开机速度,而且本地的模型不如联网的回答效果好,果断选择了卸载,但是今天卸载发现提示下方的错误。根据此文章可以解决当前的问题。 根据此文章可以解决当前的…...

网络安全设备防护原理 网络安全防护装置

🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 防火墙 简介 网络层的防护设备,依照特殊的规则允许或者限制传输的数据通过 是由软件和硬件设备组合而成,在内部网和外部网之间、专用网…...

Python的那些事第二十八篇:数据分析与操作的利器Pandas

Pandas:数据分析与操作的利器 摘要 Pandas是基于Python的开源数据分析库,广泛应用于数据科学、机器学习和商业智能等领域。它提供了高效的数据结构和丰富的分析工具,能够处理结构化数据、时间序列数据以及复杂的数据转换任务。本文从Pandas的基础概念入手,深入探讨其核心…...

学习threejs,使用MeshBasicMaterial基本网格材质

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.MeshBasicMaterial 二…...

【git-hub项目:YOLOs-CPP】本地实现05:项目移植

ok,经过前3个博客,我们实现了项目的跑通。 但是,通常情况下,我们的项目都是需要在其他电脑上也跑通,才对。 然而,经过测试,目前出现了2 个bug。 项目一键下载【⬇️⬇️⬇️】: 精…...

Html5学习教程,从入门到精通,HTML5 元素语法知识点及案例代码(2)

HTML5 元素语法知识点及案例代码 一、HTML5 元素概述 HTML5 元素是构成网页的基本单位&#xff0c;每个元素都有特定的语义和功能。HTML5 元素由开始标签、内容和结束标签组成&#xff0c;例如&#xff1a; <p>这是一个段落。</p><p> 是开始标签这是一个段…...

【python】协程(coroutine)

协程&#xff08;coroutine&#xff09;可以理解为一个可以中途暂停保存当前执行状态信息并可以从此处恢复执行的函数&#xff0c;多个协程共用一个线程执行&#xff0c;适合执行需要“等待”的任务。 所以严格意义上&#xff0c;多个协程同一时刻也只有一个在真正的执行&#…...

【编译器】-LLVMIR

概述 LLVM 是一种基于静态单赋值 (SSA) 的表示形式&#xff0c;提供类型安全、低级操作、灵活性以及干净地表示“所有”高级语言的能力。 LLVM IR 是一门低级语言&#xff0c;语法类似于汇编任何高级编程语言&#xff08;如C&#xff09;都可以用LLVM IR表示基于LLVM IR可以很…...

java面试场景问题

还在补充&#xff0c;这几天工作忙&#xff0c;闲了会把答案附上去&#xff0c;也欢迎各位大佬评论区讨论 1.不用分布式锁如何防重复提交 方法 1&#xff1a;基于唯一请求 ID&#xff08;幂等 Token&#xff09; 思路&#xff1a;前端生成 一个唯一的 requestId&#xff08;…...

算法菜鸡备战3月2日传智杯省赛----0221

2209. 用地毯覆盖后的最少白色砖块 - 力扣&#xff08;LeetCode&#xff09; 力扣每日一题 class Solution { public:// 白色最少 黑色最多int minimumWhiteTiles(string floor, int numCarpets, int carpetLen) {int n floor.size();// 记忆化搜索vector memo(n 1, vector&…...

python pandas下载

pandas pandas:就是一个可以处理数据的 python 库 核心功能&#xff1a; 数据的清洗&#xff1a;处理丢失值&#xff0c;重复值数据分析&#xff1a;计算和统计信息&#xff0c;或分组汇总数据可视化&#xff1a;结合 图标库&#xff08;Matplotlib&#xff09;完成数据可视化…...

高斯牛顿法(GN)与列文伯格-马夸尔特方法在ORB-SLAM3中的应用

问题背景 高斯牛顿法&#xff08;Gauss-Newton, GN&#xff09;和列文伯格-马夸尔特方法&#xff08;Levenburg-Marquadt, LM&#xff09;是两种最常用的非线性优化方法&#xff0c;这两种方法在ORB-SLAM3系统中均有使用。 在ORB-SLAM3前端跟踪线程(Tracking)中&#xff0c;局…...

Python+Selenium+Pytest+POM自动化测试框架封装

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、测试框架简介 1&#xff09;测试框架的优点 代码复用率高&#xff0c;如果不使用框架的话&#xff0c;代码会显得很冗余。可以组装日志、报告、邮件等一些高…...

猿大师中间件:网页直接内嵌本机EXE、OCX控件、ActiveX控件或桌面应用程序神器

猿大师中间件自从2019年发布以来&#xff0c;迄今为止不断迭代升级&#xff0c;给第三方提供了将自己的桌面程序和OCX控件支持直接内嵌到浏览器网页运行的赋能SDK开发包。 目前针对不同需求发布了三个成熟且商用的产品&#xff1a; 猿大师播放器&#xff1a;浏览器中直接原生…...

【Python】03-Python语法入门

文章目录 1、基本概念1.1、表达式1.2、语句1.3、程序&#xff08;program&#xff09;1.4、函数&#xff08;function&#xff09; 2、基本语法3、字面量与变量4、变量与标识符 1、基本概念 1.1、表达式 表达式就是一个类似于数学公式的东西&#xff0c;表达式一般仅用来计算一…...

C++,设计模式,【工厂方法模式】

文章目录 如何用汽车生产线理解工厂方法模式?一、传统生产方式的困境二、工厂方法模式解决方案三、模式应用场景四、模式优势分析五、现实应用启示✅C++,设计模式,【目录篇】 如何用汽车生产线理解工厂方法模式? 某个早晨,某车企CEO看着会议室里堆积如面的新车订单皱起眉…...

跟着 Lua 5.1 官方参考文档学习 Lua (5)

文章目录 2.10 – Garbage Collection2.10.1 – Garbage-Collection Metamethods2.10.2 – Weak Tables 2.10 – Garbage Collection Lua performs automatic memory management. This means that you have to worry neither about allocating memory for new objects nor abo…...

9.PG数据库层权限管理(pg系列课程)第2遍

一、PostgreSQL数据库属主 Postgres中的数据库属主属于创建者&#xff0c;只要有createdb的权限就可以创建数据库&#xff0c;数据库属主不一定拥有存放在该数据库中其它用户创建的对象的访问权限。数据库在创建后&#xff0c;允许public角色连接&#xff0c;即允许任何人连接…...

鸿蒙-canvas-画时钟

文章目录 前言准备分析组成部分数值计算过程 开始第一步 画圆环第二步 画格子第三步 画数字第四、五步 画指针&定时更新最后一步 前言 你在 Android 上能画出来的东西&#xff0c;在鸿蒙上画不出来&#xff1f; 画个时钟嘛&#xff0c;有啥难的&#xff1f; 你行你上&…...

【AI实践】阿里百炼文本对话Agent安卓版搭建

环境&#xff1a;安卓手机运行环境&#xff1b;WinsurfAI编程工具&#xff1b;阿里百炼提前创建Agent应用&#xff1b; 耗时&#xff1a;2小时&#xff1b; 1&#xff0c;新建安卓项目 完成文本输入&#xff0c;并将输入的文字显示出来。 2&#xff0c;安装SDK 参考文档 安…...

算法很美笔记(Java)——动态规划

解重叠子问题&#xff08;当前解用到了以前求过的解&#xff09; 形式&#xff1a;记忆型递归或递推&#xff08;dp&#xff09; 动态规划本质是递推&#xff0c;核心是找到状态转移的方式&#xff0c;也就是填excel表时的逻辑&#xff08;填的方式&#xff09;&#xff0c;而…...

Jest单元测试

由于格式和图片解析问题&#xff0c;可前往 阅读原文 前端自动化测试在提高代码质量、减少错误、提高团队协作和加速交付流程方面发挥着重要作用。它是现代软件开发中不可或缺的一部分&#xff0c;可以帮助开发团队构建可靠、高质量的应用程序 单元测试&#xff08;Unit Testi…...

《Stable Diffusion绘画完全指南:从入门到精通的Prompt设计艺术》-配套代码示例

第一章&#xff1a;模型加载与基础生成 1.1 基础模型加载 from diffusers import StableDiffusionPipeline import torch# 加载SD 1.5基础模型&#xff08;FP32精度&#xff09; pipe StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5",…...

OnlyOffice:前端编辑器与后端API实现高效办公

OnlyOffice&#xff1a;前端编辑器与后端API实现高效办公 一、OnlyOffice概述二、前端编辑器&#xff1a;高效、灵活且易用1. 完善的编辑功能2. 实时协作支持3. 自动保存与版本管理4. 高度自定义的界面 三、后端API&#xff1a;管理文档、用户与权限1. 轻松集成与定制2. 实时协…...

springboot多实例部署时,@Scheduled注释的方法重复执行

问题&#xff1a;springboot多实例部署时&#xff0c;Scheduled注释的方法重复执行 在 Spring Boot 中要实现 Redis 的SET NX EX命令&#xff0c;可以借助 Spring Data Redis 来完成。SET NX EX命令用于在键不存在时设置键值对&#xff0c;并同时设置过期时间。 <dependen…...

coco格式

COCO&#xff08;Common Objects in Context&#xff09;格式是一种广泛用于图像识别和分割任务的数据格式&#xff0c;尤其是在目标检测、语义分割等任务中。COCO格式的核心包括以下几个部分&#xff1a; images: 包含图像的基本信息&#xff08;如文件名、大小、ID等&#x…...

骶骨神经

骶骨肿瘤手术后遗症是什么_39健康网_癌症 [健康之路]匠心仁术&#xff08;七&#xff09; 勇闯禁区 骶骨肿瘤切除术...