【SSM】Spring + SpringMVC + Mybatis

devtools/2025/2/2 7:14:38/

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.ppmy.cn/devtools/155376.html

相关文章

深入MapReduce——从MRv1到Yarn

引入 我们前面篇章有提到,和MapReduce的论文不太一样。在Hadoop1.0实现里,每一个MapReduce的任务并没有一个独立的master进程,而是直接让调度系统承担了所有的worker 的master 的角色,这就是Hadoop1.0里的 JobTracker。在Hadoop1…

图漾相机——C++语言属性设置

文章目录 前言1.SDK API功能介绍1.1 Device组件下的API测试1.1.1 相机工作模式设置(TY_TRIGGER_PARAM_EX)1.1.2 TY_INT_FRAME_PER_TRIGGER1.1.3 TY_INT_PACKET_DELAY1.1.4 TY_INT_PACKET_SIZE1.1.5 TY_BOOL_GVSP_RESEND1.1.6 TY_BOOL_TRIGGER_OUT_IO1.1.…

Java小白入门教程:HashMap

目录 一、定义 二、作用 1、存储键值对 2、快速查找 3、动态扩容 三、使用场景 1、当你需要根据键快速查找值时 2、当你不需要保持元素的顺序时(HashMap不保证元素的顺顺序)。 3、当你需要存储大量的键值对,并且频繁地进行插入和删除操作时。 四、语法及示…

基于Scrapy采集豆瓣电影Top250的详细数据

基于Scrapy采集豆瓣电影Top250的详细数据 Scrapy 官方文档:https://docs.scrapy.org/en/latest/豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:基于Scrapy框架采集豆瓣电影Top250的详细数据。 电脑系统:Windows 使用软件:PyCharm、Navicat Python…

【4. C++ 变量类型详解与创新解读】

本章目录: 前言什么是变量?C 基本变量类型1. 基本类型2. 扩展类型 自动类型转换与强制类型转换自动类型转换强制类型转换 声明与定义声明定义 左值与右值结语 前言 在C中,变量是程序存储数据的基本单元。变量的定义和使用涉及多种类型和规则&#xff0c…

深度学习编译器的演进:从计算图到跨硬件部署的自动化之路

第一章 问题的诞生——深度学习部署的硬件困境 1.1 计算图的理想化抽象 什么是计算图? 想象你正在组装乐高积木。每个积木块代表一个数学运算(如加法、乘法),积木之间的连接代表数据流动。深度学习框架正是用这种"积木拼接…

深入剖析 HTML5 新特性:语义化标签和表单控件完全指南

系列文章目录 01-从零开始学 HTML:构建网页的基本框架与技巧 02-HTML常见文本标签解析:从基础到进阶的全面指南 03-HTML从入门到精通:链接与图像标签全解析 04-HTML 列表标签全解析:无序与有序列表的深度应用 05-HTML表格标签全面…

Spring AOP 入门教程:基础概念与实现

目录 第一章:AOP概念的引入 第二章:AOP相关的概念 1. AOP概述 2. AOP的优势 3. AOP的底层原理 第三章:Spring的AOP技术 - 配置文件方式 1. AOP相关的术语 2. AOP配置文件方式入门 3. 切入点的表达式 4. AOP的通知类型 第四章&#x…