【SSM】Spring + SpringMVC + Mybatis

news2025/2/5 5:47:56

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
代替值+方法的写法

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

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

相关文章

智慧园区综合管理系统如何实现多个维度的高效管理与安全风险控制

内容概要 在当前快速发展的城市环境中,智慧园区综合管理系统正在成为各类园区管理的重要工具,无论是工业园、产业园、物流园,还是写字楼与公寓,都在积极寻求如何提升管理效率和保障安全。通过快鲸智慧园区管理系统,用…

【协议详解】卫星通信5G IoT NTN SIB33-NB 信令详解

一、SIB33信令概述 在5G非地面网络(NTN)中,卫星的高速移动性和广域覆盖特性使得地面设备(UE)需要频繁切换卫星以维持连接。SIB32提供了UE预测当前服务的卫星覆盖信息,SystemInformationBlockType33&#x…

《LLM大语言模型深度探索与实践:构建智能应用的新范式,融合代理与数据库的高级整合》

文章目录 Langchain的定义Langchain的组成三个核心组件实现整个核心组成部分 为什么要使用LangchainLangchain的底层原理Langchain实战操作LangSmithLangChain调用LLM安装openAI库-国内镜像源代码运行结果小结 使用Langchain的提示模板部署Langchain程序安装langserve代码请求格…

【Envi遥感图像处理】010:归一化植被指数NDVI计算方法

文章目录 一、NDVI简介二、NDVI计算方法1. NDVI工具2. 波段运算三、注意事项1. 计算结果为一片黑2. 计算结果超出范围一、NDVI简介 归一化植被指数,是反映农作物长势和营养信息的重要参数之一,应用于遥感影像。NDVI是通过植被在近红外波段(NIR)和红光波段(R)的反射率差异…

优选算法合集————双指针(专题二)

好久都没给大家带来算法专题啦,今天给大家带来滑动窗口专题的训练 题目一:长度最小的子数组 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …

基于微信小程序的私家车位共享系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

糖化之前,为什么要进行麦芽粉碎?

糖化的目的是将麦芽中的淀粉转化为可发酵性的糖分,而糖化之前,进行麦芽粉碎是确保糖化效果的关键步骤。本文天泰将阐述麦芽粉碎的重要性及其对酿造过程的影响。 一、麦芽粉碎的目的 增加酶的作用面积:麦芽中的淀粉和蛋白质等物质需要通过酶…

PAT甲级1052、Linked LIst Sorting

题目 A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now given a linked list, you are supposed to sort the stru…

半导体器件与物理篇6 MESFET

金属-半导体接触 MESFET与MOSFET的相同点:它们的电压电流特性相似。都有源漏栅三极,强反型,漏极加正向电压,也会经历线性区、夹断点、饱和区三个阶段。 MESFET与MOSFET的不同点:在器件的栅电极部分,MESFE…

deepseek 本地化部署和小模型微调

安装ollama 因为本人gpu卡的机器系统是centos 7, 直接使用ollama会报 所以ollama使用镜像方式进行部署, 拉取镜像ollama/ollama 启动命令 docker run -d --privileged -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama 查看ollama 是否启动…

socket实现HTTP请求,参考HttpURLConnection源码解析

背景 有台服务器,网卡绑定有2个ip地址,分别为: A:192.168.111.201 B:192.168.111.202 在这台服务器请求目标地址 C:192.168.111.203 时必须使用B作为源地址才能访问目标地址C,在这台服务器默认…

3、C#基于.net framework的应用开发实战编程 - 实现(三、三) - 编程手把手系列文章...

三、 实现; 三.三、编写应用程序; 此文主要是实现应用的主要编码工作。 1、 分层; 此例子主要分为UI、Helper、DAL等层。UI负责便签的界面显示;Helper主要是链接UI和数据库操作的中间层;DAL为对数据库的操…

Java BIO详解

一、简介 1.1 BIO概述 BIO(Blocking I/O),即同步阻塞IO(传统IO)。 BIO 全称是 Blocking IO,同步阻塞式IO,是JDK1.4之前的传统IO模型,就是传统的 java.io 包下面的代码实现。 服务…

Haproxy+keepalived高可用集群,haproxy宕机的解决方案

Haproxykeepalived高可用集群,允许keepalived宕机,允许后端真实服务器宕机,但是不允许haproxy宕机, 所以下面就是解决方案 keepalived配置高可用检测脚本 ,master和backup都要添加 配置脚本 # vim /etc/keepalived…

98,【6】 buuctf web [ISITDTU 2019]EasyPHP

进入靶场 代码 <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;通常用于调试或展示代码&#xff0c;方便用户查看代码逻辑 highlight_file(__FILE__);// 从 GET 请求中获取名为 _ 的参数值&#xff0c;并赋值给变量 $_ // 符号用于抑制可能出现的错误信息&#xff…

九. Redis 持久化-RDB(详细讲解说明,一个配置一个说明分析,步步讲解到位)

九. Redis 持久化-RDB(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位) 文章目录 九. Redis 持久化-RDB(详细讲解说明&#xff0c;一个配置一个说明分析&#xff0c;步步讲解到位)1. RDB 概述2. RDB 持久化执行流程3. RDB 的详细配置4. RDB 备份&恢…

小程序越来越智能化,作为设计师要如何进行创新设计

一、用户体验至上 &#xff08;一&#xff09;简洁高效的界面设计 小程序的特点之一是轻便快捷&#xff0c;用户期望能够在最短的时间内找到所需功能并完成操作。因此&#xff0c;设计师应致力于打造简洁高效的界面。避免过多的装饰元素和复杂的布局&#xff0c;采用清晰的导航…

(done) MIT6.S081 2023 学习笔记 (Day7: LAB6 Multithreading)

网页&#xff1a;https://pdos.csail.mit.edu/6.S081/2023/labs/thread.html (任务1教会了你如何用 C 语言调用汇编&#xff0c;编译后链接即可) 任务1&#xff1a;Uthread: switching between threads (完成) 在这个练习中&#xff0c;你将设计一个用户级线程系统中的上下文切…

JVM执行流程与架构(对应不同版本JDK)

直接上图&#xff08;对应JDK8以及以后的HotSpot&#xff09; 这里主要区分说明一下 方法区于 字符串常量池 的位置更迭&#xff1a; 方法区 JDK7 以及之前的版本将方法区存放在堆区域中的 永久代空间&#xff0c;堆的大小由虚拟机参数来控制。 JDK8 以及之后的版本将方法…

基于开源AI智能名片2 + 1链动模式S2B2C商城小程序视角下的个人IP人设构建研究

摘要&#xff1a;本文深入探讨在开源AI智能名片2 1链动模式S2B2C商城小程序的应用场景下&#xff0c;个人IP人设构建的理论与实践。通过剖析个人IP人设定义中的“诉求”“特质”“可感知”三要素&#xff0c;结合该小程序特点&#xff0c;阐述其对个人IP打造的影响与推动作用&…