【SSM】Spring + SpringMVC + Mybatis

SSM课程,以下为该课程的笔记

bean:IOC容器创建的对象

P12 bean的生命周期
在bean中定义init()和destroy()方法,然后在xml中配置方法名,让bean对象能找到对应的生命周期方法。
或通过实现接口的方式定义声明周期方法。

P13 setter注入
注入引用类型 :定义set方法后在propoties标签的ref属性注入。
注入基本类型:声明变量后在propoties标签的value属性注入。

P14 构造器注入
在实现类写构造方法,用constructor-arg标签注入。

P15 依赖自动装配
在xml的bean标签用autowire="byXxx"配置。推荐用byType。
(仅用于引用类型依赖注入)

P16 集合注入

P17 案例:数据源对象管理
管理第三方bean:例如Druid
在bean标签中的property标签中设置value。
C3P0连接池对象

P18 加载properties文件
将配置信息从写在xml文件变成写在properties中,然后在xml中用插值语法配置。开启命名空间改5处。

P19 容器
BeanFactory是ioc容器的顶层接口。
ApplicationContext接口是Spring容器的核心接口,提供基础的bean操作相关方法,通过其它接口扩展其功能。

P20 小结
bean配置 di配置

P21 注解开发定义bean
在要定义的bean上面写@Component。
Spring提供Component注解的三个衍生注解:
@Controller:定义表现层bean
@Service:定义业务层bean
@Repository:定义数据层bean
配合context:component-scan使用。

P22 纯注解开发
@Configuration
@ComponentScan
AnnotationConfigApplicationContext

P23 注解开发-bean管理
bean作用范围:@Scope(“prototype”)非单例模式
“singleon” 单例模式
bean生命周期:init()前加@PostConstruct(构造后)
destroy()前加@PreDestroy(销毁前)

P24 注解开发-依赖注入
自动装配:@Autowired(按类型注入)
如果有两个相同类型的bean,加@Qualifier(“beanName”)指定加载bean的名称。
自从装配基于反射设计创建对象,无需setter方法。
建议使用无参构造方法。
上面输入的是引用类型,简单类型在Dao用@Value(“xxx”)或(“${name}”)注入。
使用@PropertySource加载properties文件。

P25 注解开发-管理第三方bean
用@Bean将return的对象定义为bean对象。写在JdbcConfig中,在核心配置文件中用@Import(JdbcConfig.class)导入配置。
P26 为第三方Bean注入资源
简单类型:把值从set中拎出去声明成员变量,加@Value(“name”)注解。
引用类型:直接使用方法形参注入。(原理:自动装配)

P27 注解开发总结

P28-29 Spring整合MyBatis
导入mybatis-spring坐标
SqlSessionFactoryBean
两部分配置转成set

P30 Spring整合JUnit

P31 AOP面向切面编程
期待被注入功能的方法—>连接点(所有的方法)
注入的方法—>通知(共性功能) 通知所在的类—>通知类
被注入功能的方法—>切入点(要追加功能的方法)
描述通知与切入点的关系—>切面

P32 AOP入门案例:在接口执行前输出当前系统时间
用Pointcut定义切入点,在私有无返回值无函数体的方法上。再在通知上用@Before绑定切面。

P33 AOP工作流程

P34 AOP切入点表达式
动作关键字((访问修饰符) 返回值类型 包名.类名/接口名.方法名(参数)异常名)
通配符 */…/+

P35 AOP通知类型
前置通知 @Before(“pt()”)
后置通知 @After(“pt()”)
环绕通知(前后都有) @Around(“pt()”)
public void around(ProceedingJoinPoint pjp) {
xxx前操作
pjp.proceed(); //调用原始操作
xxx后操作
}
通常使用Object作为返回类型。
返回后通知(正常结束无异常)@AfterReturning
抛出异常后通知 @AfterThrowing

P36 案例:业务层接口执行效率

P37 AOP通知获取数据
获取参数 pjp.getArgs();
获取返回值
获取异常

P38 案例:百度网盘密码数据兼容处理(去空格)

P39 AOP总结
使用场景 :有大量的共同功能需要注入

P40 Spring事务
@Transactional
@PlatformTransactionManager

P41 Spring事务角色
把in钱和out钱放在一个事务中,该事务叫—>事务管理员
发起事务方,在Spring中通常指代业务层开启事务的方法
in钱和out钱叫—>事务协调员
加入事务方,在Spring中通常指代数据层方法,也可以是业务层方法

P42 Spring事物属性
rollbackFor设置事务回滚异常 (rollbackFor = {NullPointException.class})
案例:转账业务追加日志
事务传播行为:事务协调员对事务管理员所携带事务的处理态度
@Transactional(propagation = Propagation.REQUIRES_NEW)

P43-74 SpringMVC
P43 SpringMVC简介
功能类似servlet,均为表现层。接受请求参数,返回响应结果。

P44 SpringMVC入门案例
@Controller
public class UserController {
@RequestMapping(“/save”)
@ResponseBody
public String save(){
xxxxxx;
return “xxx”;
}
}

设定SpringMVC加载对应的bean
@Configuration
@ComponentScan(“com.itheima.controller”)
public class SpringMvcConfig {
}

在ServletContainerInitConfig中定义servlet容器启动的配置类,在里面加载spring的配置。

P46 bean加载控制
控制Spring/SpringMVC容器加载各自的bean。
SpringMVC的相关bean:表现层bean
Spring控制的bean:业务bean(Service)、功能bean(DataSource等)
SpringBoot根据这个实现加载bean的细粒度控制。
方式一:将Spring加载的bean设定扫描范围为com.itheima,exclude掉controller包内的bean
方式二:将Spring加载的bean设定扫描范围为精准范围,include住service包、dao包等

P48 请求映射路径
设置模块名作请求前缀,添加类注解@RequestMapping设置模块名为请求路径前缀。

P49 get与post请求发送普通参数(Postman)
处理中文乱码:配置字符过滤器

P50 5种类型参数传递
普通参数:若参数名相同则直接传递,若不同用@RequestParam(“name”)绑定参数关系。
POJO参数:直接传递。
嵌套POJO参数:用. 连接属性名层级
数组&集合参数:key相同直接往里加

P51 json数据传递参数
@EnabaleWebMvc注解将json格式的参数转化为对象
@RequestBody与@RequestParam区别:
@RequestBody用于接受json数据
@RequestParam用于接受url地址、表单传参

P52 日期型参数传递
@DateTimeFormat(pattern=“yyyy/MM/dd HH:mm:ss”)
原理:convert接口-类型转换器

P53 响应
(可以返回jsp页面或text文本)
加@ResponseBody,将return的对象集合转成json格式。
类型转换器:HttpMessageConverter

P54 REST风格(访问网络资源的格式)
因为要简化路径,所以REST风格根据行为动作区分操作方式:GET查询/POST新增或保存/PUT修改/DELETE删除
模块用复数加s

P56 RESTful快速开发
@RestController = @Controller + @ResponseBody

@GetMapping(“/{id}”) @PostMapping @PutMapping @DeleteMapping
代替值+方法的写法

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

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

相关文章

2025年1月22日(网络编程 udp)

系统信息: ubuntu 16.04LTS Raspberry Pi Zero 2W 系统版本: 2024-10-22-raspios-bullseye-armhf Python 版本:Python 3.9.2 已安装 pip3 支持拍摄 1080p 30 (1092*1080), 720p 60 (1280*720), 60/90 (640*480) 已安装 vim 已安装 git 学习…

如何对系统调用进行扩展?

扩展系统调用是操作系统开发中的一个重要任务。系统调用是用户程序与操作系统内核之间的接口,允许用户程序执行内核级操作(如文件操作、进程管理、内存管理等)。扩展系统调用通常包括以下几个步骤: 一、定义新系统调用 扩展系统调用首先需要定义新的系统调用的功能。系统…

当卷积神经网络遇上AI编译器:TVM自动调优深度解析

从铜线到指令:硬件如何"消化"卷积 在深度学习的世界里,卷积层就像人体中的毛细血管——数量庞大且至关重要。但鲜有人知,一个简单的3x3卷积在CPU上的执行路径,堪比北京地铁线路图般复杂。 卷积的数学本质 对于输入张…

深度学习的应用

目录 一、机器视觉 1.1 应用场景 1.2 常见的计算机视觉任务 1.2.1 图像分类 1.2.2 目标检测 1.2.3 图像分割 二、自然语言处理 三、推荐系统 3.1 常用的推荐系统算法实现方案 四、图像分类实验补充 4.1 CIFAR-100 数据集实验 实验代码 4.2 CIFAR-10 实验代码 深…

Flutter常用Widget小部件

小部件Widget是一个类,按照继承方式,分为无状态的StatelessWidget和有状态的StatefulWidget。 这里先创建一个简单的无状态的Text小部件。 Text文本Widget 文件:lib/app/app.dart。 import package:flutter/material.dart;class App exte…

mysqldump+-binlog增量备份

注意:二进制文件删除必须使用help purge 不可用rm -f 会崩 一、概念 增量备份:仅备份上次备份以后变化的数据 差异备份:仅备份上次完全备份以后变化的数据 完全备份:顾名思义,将数据完全备份 其中,…

智能园区管理系统助力企业安全与效率双提升的成功案例分析

内容概要 在当今迅速发展的商业环境中,企业面临着资产管理、风险控制和运营效率提高等多重挑战。为了应对这些挑战,智能园区管理系统应运而生,为企业提供了全新的解决方案。例如,快鲸智慧园区(楼宇)管理系…

洛谷 P10289 [GESP样题 八级] 小杨的旅游 C++ 完整题解

一、题目链接 P10289 [GESP样题 八级] 小杨的旅游 - 洛谷 二、题目大意 n个节点之间有n - 1条边,其中k个节点是传送门,任意两个传送门之间可以 以0单位地时间相互到达。问从u到v至少需要多少时间? 三、解题思路 输入不必多讲。 cin >> …

本地部署DeepSeekp R1教程

目录 一.打开ollama官网,下载安装 1.下载完成双击安装程序 2.winr 输入cmd打开命令行输入命令 查看是否安装成功 二.部署DeepSeek R1模型 1. 下载模型:终端输入 (根据你的显存大小选择版本,16g就可以选择14b/32b)**电脑配置很低的话选…

OVS-DPDK

dpdk介绍及应用 DPDK介绍 DPDK(Data Plane Development Kit)是一组快速处理数据包的开发平台及接口。有intel主导开发,主要基于Linux系统,用于快速数据包处理的函 数库与驱动集合,可以极大提高数据处理性能和吞吐量&…

87.(3)攻防世界 web simple_php

之前做过&#xff0c;回顾 12&#xff0c;攻防世界simple_php-CSDN博客 进入靶场 <?php // 显示当前 PHP 文件的源代码&#xff0c;方便调试或查看代码结构 // __FILE__ 是 PHP 的一个魔术常量&#xff0c;代表当前文件的完整路径和文件名 show_source(__FILE__);// 包含…

物联网 STM32【源代码形式-ESP8266透传】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】

一、MQTT介绍 MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;是一种基于发布/订阅模式的轻量级通讯协议&#xff0c;构建于TCP/IP协议之上。它最初由IBM在1999年发布&#xff0c;主要用于在硬件性能受限和网络状况不佳的情…

Airflow:深入理解Apache Airflow Task

Apache Airflow是一个开源工作流管理平台&#xff0c;支持以编程方式编写、调度和监控工作流。由于其灵活性、可扩展性和强大的社区支持&#xff0c;它已迅速成为编排复杂数据管道的首选工具。在这篇博文中&#xff0c;我们将深入研究Apache Airflow 中的任务概念&#xff0c;探…

【数据结构篇】时间复杂度

一.数据结构前言 1.1 数据结构的概念 数据结构(Data Structure)是计算机存储、组织数据的⽅式&#xff0c;指相互之间存在⼀种或多种特定关系的数 据元素的集合。没有⼀种单⼀的数据结构对所有⽤途都有⽤&#xff0c;所以我们要学各式各样的数据结构&#xff0c; 如&#xff1a…

Kafka 副本机制(包含AR、ISR、OSR、HW 和 LEO 介绍)

文章目录 Kafka 副本机制&#xff08;包含AR、ISR、OSR、HW 和 LEO 介绍&#xff09;1. 副本的基本概念2. 副本同步和一致性2.1 AR&#xff08;Assigned Replicas&#xff09;2.2 ISR&#xff08;In-Sync Replicas&#xff09;2.3 OSR&#xff08;Out-of-Sync Replicas&#xf…

完美还是完成?把握好度,辨证看待

完美还是完成&#xff1f; 如果说之前这个答案有争议&#xff0c;那么现在&#xff0c;答案毋庸置疑 ■为什么完美大于完成 ●时间成本&#xff1a; 做事不仅要考虑结果&#xff0c;还要考虑时间和精力&#xff0c;要说十年磨一剑的确质量更好&#xff0c;但是现实没有那么多…

Kafka中文文档

文章来源&#xff1a;https://kafka.cadn.net.cn 什么是事件流式处理&#xff1f; 事件流是人体中枢神经系统的数字等价物。它是 为“永远在线”的世界奠定技术基础&#xff0c;在这个世界里&#xff0c;企业越来越多地使用软件定义 和 automated&#xff0c;而软件的用户更…

电磁波谱与图像

我们所处的世界&#xff0c;其实是被各种各样的电磁波所包围的&#xff0c;从我们能看到的可见光&#xff0c;到不可见的红外&#xff0c;以及紫外&#xff0c;X&#xff0c;Gamma 射线&#xff0c;还有信息传输中的无线电波&#xff0c;雷达波&#xff0c;都属于电磁波。 引用…

海外问卷调查之渠道查,对企业经营的重要价值有哪些表现

海外问卷调查&#xff0c;是市场研究的重要手段之一&#xff0c;而市场研究的定义为&#xff1a;针对企业和机构进行的信息收集和研究过程&#xff0c;将企业和机构需要的信息具体化&#xff0c;同时设计合理的信息收集方法&#xff0c;管理并实施信息的收集过程&#xff0c;并…

LabVIEW无线齿轮监测系统

本案例介绍了基于LabVIEW的无线齿轮监测系统设计。该系统利用LabVIEW编程语言和改进的天牛须算法优化支持向量机&#xff0c;实现了无线齿轮故障监测。通过LabVIEW软件和相关硬件&#xff0c;可以实现对齿轮箱振动信号的采集、传输和故障识别&#xff0c;集远程采集、数据库存储…