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

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

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

相关文章

【Block总结】MAB,多尺度注意力块|即插即用

文章目录 一、论文信息二、创新点三、方法MAB模块解读1、MAB模块概述2、MAB模块组成3、MAB模块的优势 四、效果五、实验结果六、总结代码 一、论文信息 标题: Multi-scale Attention Network for Single Image Super-Resolution作者: Yan Wang, Yusen Li, Gang Wang, Xiaoguan…

【深度学习】DeepSeek模型介绍与部署

原文链接:DeepSeek-V3 1. 介绍 DeepSeek-V3,一个强大的混合专家 (MoE) 语言模型,拥有 671B 总参数,其中每个 token 激活 37B 参数。 为了实现高效推理和成本效益的训练,DeepSeek-V3 采用了多头潜在注意力 (MLA) 和 De…

深度学习深度解析:从基础到前沿

引言 深度学习作为人工智能的一个重要分支,通过模拟人脑的神经网络结构来进行数据分析和模式识别。它在图像识别、自然语言处理、语音识别等领域取得了显著成果。本文将深入探讨深度学习的基础知识、主要模型架构以及当前的研究热点和发展趋势。 基础概念与数学原理…

如何实现滑动列表功能

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了沉浸式状态栏相关的内容,本章回中将介绍SliverList组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的SliverList组件是一种列表类组件,类似我们之前介…

OpenEuler学习笔记(十七):OpenEuler搭建Redis高可用生产环境

在OpenEuler上搭建Redis高可用生产环境,通常可以采用Redis Sentinel或Redis Cluster两种方式,以下分别介绍两种方式的搭建步骤: 基于Redis Sentinel的高可用环境搭建 安装Redis 配置软件源:可以使用OpenEuler的默认软件源&#…

前沿课题推荐:提升水下导航精度的多源数据融合与算法研究

随着海洋探测技术的迅猛发展,水下地形匹配导航逐渐成为国际研究的热点领域。在全球范围内,水下导航技术的精确性对于科学探索、资源勘探及国防安全等方面都至关重要。我国在这一领域的研究与应用需求日益增长,亟需通过先进的技术手段提升水下…

浅析CDN安全策略防范

CDN(内容分发网络)信息安全策略是保障内容分发网络在提供高效服务的同时,确保数据传输安全、防止恶意攻击和保护用户隐私的重要手段。以下从多个方面详细介绍CDN的信息安全策略: 1. 数据加密 数据加密是CDN信息安全策略的核心之…

three.js+WebGL踩坑经验合集(6.1):负缩放,负定矩阵和行列式的关系(2D版本)

春节忙完一轮,总算可以继续来写博客了。希望在春节假期结束之前能多更新几篇。 这一篇会偏理论多一点。笔者本没打算在这一系列里面重点讲理论,所以像相机矩阵推导这种网上已经很多优质文章的内容,笔者就一笔带过。 然而关于负缩放&#xf…

HTB:Administrator[WriteUP]

目录 连接至HTB服务器并启动靶机 信息收集 使用rustscan对靶机TCP端口进行开放扫描 将靶机TCP开放端口号提取并保存 使用nmap对靶机TCP开放端口进行脚本、服务扫描 使用nmap对靶机TCP开放端口进行漏洞、系统扫描 使用nmap对靶机常用UDP端口进行开放扫描 使用nmap对靶机…

一文讲解JVM中的G1垃圾收集器

接上一篇博文,这篇博文讲下JVM中的G1垃圾收集器 G1在JDK1.7时引入,在JDK9时取代了CMS成为默认的垃圾收集器; G1把Java堆划分为多个大小相等的独立区域Region,每个区域都可以扮演新生代(Eden和Survivor)或老…

力扣第149场双周赛

文章目录 题目总览题目详解找到字符串中合法的相邻数字重新安排会议得到最多空余时间I3440.重新安排会议得到最多空余时间II 第149场双周赛 题目总览 找到字符串中合法的相邻数字 重新安排会议得到最多空余时间I 重新安排会议得到最多空余时间II 变成好标题的最少代价 题目…

25届 信息安全领域毕业设计选题88例:前沿课题

目录 前言 毕设选题 开题指导建议 更多精选选题 选题帮助 最后 前言 大家好,这里是海浪学长毕设专题! 大四是整个大学期间最忙碌的时光,一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整理…

【算法设计与分析】实验6:n皇后问题的回溯法设计与求解

目录 一、实验目的 二、实验环境 三、实验内容 四、核心代码 五、记录与处理 六、思考与总结 七、完整报告和成果文件提取链接 一、实验目的 针对n皇后问题开展分析、建模、评价,算法设计与优化,并进行编码实践。 掌握回溯法求解问题的思想&#…

如何为用户设置密码

[rootxxx ~]# passwd aa #交互式的为用户设置密码 或者 [rootxxx ~]# echo 123 | passwd --stdin aa #不交互式的为用户设置密码 (适用于批量的为用户更改密码,比如一次性为100个用户初始化密码)

【Vaadin flow 实战】第5讲-使用常用UI组件绘制页面元素

vaadin flow官方提供的UI组件文档地址是 https://vaadin.com/docs/latest/components这里,我简单实战了官方提供的一些免费的UI组件,使用案例如下: Accordion 手风琴 Accordion 手风琴效果组件 Accordion 手风琴-测试案例代码 Slf4j PageT…

深入理解Java引用传递

先看一段代码: public static void add(String a) {a "new";System.out.println("add: " a); // 输出内容:add: new}public static void main(String[] args) {String a null;add(a);System.out.println("main: " a);…

Elasticsearch的开发工具(Dev Tools)

目录 说明1. **Console**2. **Search Profiler**3. **Grok Debugger**4. **Painless Lab**总结 说明 Elasticsearch的开发工具(Dev Tools)在Kibana中提供了多种功能强大的工具,用于调试、优化和测试Elasticsearch查询和脚本。以下是关于Cons…

【机器学习】自定义数据集 使用scikit-learn中svm的包实现svm分类

一、支持向量机(support vector machines. ,SVM)概念 1. SVM 绪论 支持向量机(SVM)的核心思想是找到一个最优的超平面,将不同类别的数据点分开。SVM 的关键特点包括: ① 分类与回归: SVM 可以用于分类&a…

C++并行化编程

C并行化编程 C 简介 C 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。 C 被认为是一种中级语言,它综合了高级语言和低级语言的特点。 C 是由 Bjarne Stroustrup 于 1979 年在新泽西州美…

记6(人工神经网络

目录 1、M-P神经元2、感知机3、Delta法则4、前馈型神经网络(Feedforward Neural Networks)5、鸢尾花数据集——单层前馈型神经网络:6、多层神经网络:增加隐含层7、实现异或运算(01、10为1,00、11为0)8、线性…