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 {

    @Bean
    public 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磨磨唧唧开学了玩大了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MATLAB基础学习相关知识

MATLAB安装参考:抖音-记录美好生活 MATLAB基础知识学习参考:【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分:变量定义和基本运算 生成矩阵: % 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…

Windows - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式

Windows(奇思妙想) - 通过ssh打开带有图形界面的程序 - 一种通过计划任务的曲折实现方式 前言 Windows启用OpenSSH客户端后就可以通过SSH的方式访问Windows了。但是通过SSH启动的程序: 无法显示图形界面会随着SSH进程的结束而结束 于是想到了一种通过执行“计划…

WPS接入deepseek-OfficeAI助手插件下载

功能简介 OfficeAI 助手 是一款免费的智能AI办公工具软件,专为 Microsoft Office 和 WPS 用户打造。 无论你是在寻找如何输入“打勾(√)符号”的方法,还是想知道“怎么在插入表格前添加文字”,或者“该用哪个公式”&a…

【JavaEE进阶】Spring MVC(4)-图书管理系统案例

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗 如有错误,欢迎指出~ 图书管理系统 创建书籍类BookInfo import lombok.Data;import java.math.BigDecimal;Data //这个类基本上是和数据库对应起来的 public class BookInfo {private Integer id…

路由器的WAN口和LAN口有什么区别?

今时今日,移动终端盛行的时代,WIFI可以说是家家户户都有使用到的网络接入方式。那么路由器当然也就是家家户户都不可或缺的设备了。而路由器上的两个实现网络连接的基础接口 ——WAN 口和 LAN 口,到底有什么区别?它们的功能和作用…

AI客服-接入deepseek大模型到微信(本地部署deepseek集成微信自动收发消息)

1.本地部署 1.1 ollama Ollama软件通过其高度优化的推理引擎和先进的内存管理机制,显著提升了大型语言模型在本地设备上的运行效率。其核心采用了量化技术(Quantization)以降低模型的计算复杂度和存储需求,同时结合张量并行计算&…

基于COSTAR模型的内容创作:如何用框架提升写作质量

目录 前言1. Context(上下文):理解背景,奠定写作基础1.1 何为上下文1.2 上下文的作用1.3 案例解析 2. Objective(目标):明确写作方向,避免跑题2.1 确立目标2.2 如何设定目标2.3 案例…

kafka-集群缩容

一. 简述: 当业务增加时,服务瓶颈,我们需要进行扩容。当业务量下降时,为成本考虑。自然也会涉及到缩容。假设集群有 15 台机器,预计缩到 10 台机器,那么需要做 5 次缩容操作,每次将一个节点下线…

DeepSeek 提示词:定义、作用、分类与设计原则

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

基于vue和微信小程序的校园自助打印系统(springboot论文源码调试讲解)

第3章 系统设计 3.1系统功能结构设计 本系统的结构分为管理员和用户、店长。本系统的功能结构图如下图3.1所示: 图3.1系统功能结构图 3.2数据库设计 本系统为小程序类的预约平台,所以对信息的安全和稳定要求非常高。为了解决本问题,采用前端…

大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(3)

Paimon的下载及安装,并且了解了主键表的引擎以及changelog-producer的含义参考: 大数据组件(四)快速入门实时数据湖存储系统Apache Paimon(1) 利用Paimon表做lookup join,集成mysql cdc等参考: 大数据组件(四)快速入门实时数据…

blender笔记2

一、物体贴地 物体->变换->对齐物体 ->对齐弹窗(对齐模式:反方,相对于:场景原点,对齐:z)。 之后可以设置原点->原点--3d游标 二、面上有阴影 在编辑模式下操作过后,物体面有阴影。 数据-&g…

MinkowskiEngine安装(CUDA11.8+torch2.0.1+RTX4070TI)

1、背景 1)因为项目要用这个库:MinkowskiEngine,Minkowski Engine — MinkowskiEngine 0.5.3 documentation 然后就用了之前安装好 MinkowskiEngine 的torch1.8.1,cuda11.1的环境。 2)自己的代码出现cuda不支持torch用gpu进行矩…

【Blender】二、建模篇--05,阵列修改器与晶格形变

阵列修改器是bender里面一个比较常用的修改器,所以我们单独开口来讲,我们会先从几片树叶出发,然后我们用阵列修改器把这几片树叶变成这样的造型和这样的造型。这两个造型分别就代表着阵列修改器最常用的两种偏移方法,我们现在就开始我们先来做几个树叶。 1.树叶建模 首先…

华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)

文章目录 1. **查看固件和驱动版本**2. **查看CANN版本**3. **其他辅助方法**注意事项 在华为昇腾服务器上查看固件、驱动和CANN版本的常用方法如下: 1. 查看固件和驱动版本 通过命令行工具 npu-smi 执行以下命令查看当前设备的固件(Firmware&#xff0…

2024电子取证“獬豸杯”WP

简介: 竞赛为个人赛,工具自备,只发证书(还没用,公告这么写的哈)竞赛选手们将对模拟的案件进行电子数据调查取证,全面检验参赛选手电子数据取证的综合素质和能力。 检材链接: 百度网盘…

GESP2024年3月认证C++七级( 第三部分编程题(1)交流问题)

参考程序&#xff1a; #include <iostream> #include <vector> #include <unordered_map> using namespace std;// 深度优先搜索&#xff0c;给每个节点染色&#xff0c;交替染色以模拟两校同学的划分 void dfs(vector<vector<int>>& graph…

Spring Boot框架总结(超级详细)

前言 本篇文章包含Springboot配置文件解释、热部署、自动装配原理源码级剖析、内嵌tomcat源码级剖析、缓存深入、多环境部署等等&#xff0c;如果能耐心看完&#xff0c;想必会有不少收获。 一、Spring Boot基础应用 Spring Boot特征 概念&#xff1a; 约定优于配置&#…

Blaze RangePartitioning 算子Native实现全解析

引言&#xff1a;本文将全面且深入地解析Blaze RangePartitioning算子的Native实现过程。相较于原生Spark&#xff0c;RangePartitioning的Native实现在执行时间上达到了30%的显著下降&#xff0c;同时在资源开销方面节省了高达76%。这一改进大幅降低了运行成本&#xff0c;展现…

|网络安全|网络安全学习方法

1、先网络后安全 很多初学者还没搞定网络看懂网络拓扑&#xff0c;就急着研究防火墙或VPN&#xff0c;其实这样就不清楚整个网络架构是如何安全演进的。正确的流程是&#xff1a;先通过网络协议和拓扑设计的学习&#xff0c;能独立搭建一个企业网/校园网&#xff0c;再引入局域…