【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

代替值+方法的写法

相关推荐
Future_yzx几秒前
Docker使用指南(一)——镜像相关操作详解(实战案例教学,适合小白跟学)
java·spring cloud·eureka
pps-key19 分钟前
JAVA Web 开发
java
计算机-秋大田27 分钟前
基于SpringBoot的农村电子商务系统的设计与实现(源码+SQL脚本+LW+部署讲解等)
java·spring boot·后端
大耳朵土土垚1 小时前
【Linux】线程池封装与介绍
java·linux·运维
2的n次方_2 小时前
Nacos 的介绍和使用
java·spring boot·spring cloud·微服务·云原生·nacos
武昌库里写JAVA2 小时前
机器学习,深度学习,神经网络,深度神经网络
java·开发语言·spring boot·学习·课程设计
buame2 小时前
Ajax:重塑Web交互体验的人性化探索
java·ajax·eclipse
刘小炮吖i2 小时前
正则表达式超详细讲解
java·正则表达式
工业互联网专业2 小时前
基于springboot+vue的健身房管理系统
java·vue.js·spring boot·毕业设计·源码·课程设计
.又是新的一天.2 小时前
8、面向对象:类、封装、构造方法
java