SSM

Spring

1、Spring系统架构

2、核心概念

3、IoC入门案例

导坐标:

有了容器,配置bean(容器管理的东西,里面应该是实现的类哦,不是类接口!):
配置容器的配置文件

接下来就可以获取接口,然后获取bean,使用对象:

总结:


这里有接口和接口的实现,容器管理的可不是接口而是实现的类对象。注意这里还是使用了new,没有完全解耦——>DI

4、DI入门案例


容器配置文件中不仅要声明管理哪些bean,还可以给bean设置参数(可管理两个bean的关系)。业务层的service还有new,删了,然后加一个set方法为其赋值,那么set谁来调用啊??其实容器里面就相当于是声明一个它管理的对象,那么可以将参数的设置移到这里。
业务层更改:

配置文件:

总结:


5、bean

5.1 配置



从容器中获取的bean是单例吗?

5.2 bean实例化


之前我们说的构造方法必须是public的,但是在spring中使用了一种反射的方法,即使是私有的也可以。

方法二:

有工厂类名和类中方法

方法三:
静态的方法不用工厂实例,但是非静态(将orderDao前的static删了)需要一个工厂对象才能调用其中的方法 

仍有上图中两个问题存在,使用factorybean(需要指定泛型,实例化几个名字固定的函数):


这里要注意,创建的就不是userdaofactorybean对象了,而是它里面的getobject对象

总结:

5.3 bean生命周期



这里afterPropertiesSet 参数设置之后调用,也就是如果下图展示:先输出了set.....

总结:

注意,加载初始化容器时进行的4小步,容器内的bean就都加载了,所以无论获不获取,对应的方法都执行了。


6、bean依赖注入

6.1 setter


6.2 构造器

构造函数(以前用set,现在用构造函数)


但这样name后面应该是构造函数中的形参,不是属性名!!!所以不太方便啊:所以可以不写name,使用形参的类型区分或是位置区分。


总结:

6.3 依赖自动装配

6.4 集合注入

使用setter注入:
ex:bookdao实现如下:

配置文件中传参:

6.5 第三方数据源管理

ex:
导入坐标,如数据库连接池druid

但这些property很多,写在配置文件中不方便

6.6 加载property文件


文件内容如下:

配置文件:

有个问题:property文件中如果出现了系统变量冲突的名字,那么加载时肯定是优先系统变量,如果不想这样,在加载配置文件的时候多写一个参数,关闭系统变量方式:

7、容器

之前加载容器都用的:
这只是一种方式。


总结(5 6 7)

三部分:

8、注解开发

9、spring整合mybatis

10、spring整合JUnit

11、AOP

11.1 简介

11.2 入门案例

11.3 工作流程

11.4 切入点表达式

11.5 通知类型

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

 

测试类中的内容:

通知类:

11.7 AOP通知获取数据

 若切入点的函数有参数和返回值,那么在通知函数中如何获取返回值或是参数呢?注意的是五种通知类型,并不是每一种都可以获取到参数或是返回值:

1. 获取参数:
getArgs() 获取所有参数,返回一个参数类型的数组。此外若通知函数中形参需要多个,若有获取参数的形参,他必须在第一位!!!

11.8 案例:百度网盘密码数据兼容处理

主函数:(密码是root,但要求输入(root后面还有个空格)root ,也能通过)

使用环绕通知处理:

11.9 AOP总结

切入点:

通知:

获取参数:

12、事务

12.1 事务简介

 
基本情况:
业务层:


数据层:

测试类:

使用事务:
若transfer中间出现异常,就完咯,所以这个操作是需要开启事务的。

 

12.2 事务角色

12.3 事务属性


1 其实回滚不是只要异常就回滚,只有error和运行时异常会,其他不会,如IOException就不会,若 想要回滚,可以配置:

2 案例:

基于上面的操作,增加一个记录操作:
日志数据库:
业务层多一个记录的接口和实现类:

调用了数据层(结合了mybatis,mapper(使用mapper接口对象调用接口中的方法,这一步在service中实现,同时不想new了,所以将其变为一个属性,通过bean的自动装载实现(不自动就是setter和构造器方法)),注解方式开发的,不用注解还要有sql的配置文件):

转账追加功能:

但不对,失败了,记录日志的行为也要回滚,怎么办?

记录的这个事务应单开一个事务:

总结:

SpringMVC

1、SpringMVC基本介绍

1.1 概述

原先的servlet实现增删改查:

而SpringMVC,一个文件就可以实现增删改查,里面的代码也简单了:



1.2 入门案例


记得加Tomcat插件坐标



这一步获取ctx可与以前不一样,这是web程序。


ex



使用到的一些注解:


1.3 入门案例工作流程

1.4 bean加载控制


这一段代码有简化开发方法:

1.5 PostMan



第一章总结

2、请求与响应

2.1 请求映射路径

为了避免路径重复冲突:


2.2 请求参数

2.2.1 请求响应



若post有中文乱码呢?在启动服务器也就是初始化web容器时处理:

2.2.2 五种类型请求参数









2.2.3 json数据传递参数

先加json坐标

json可传三种数据:
数组(上面),pojo对象,pojo数组

注解:

2.3 日期类型参数传递

 

内部如何工作——converter接口:

2.4 响应

2.4.1 响应页面





它将对象数据转成json,由下面接口实现:

第二章总结

3、REST

3.1 简介



3.2 入门案例


3.3 RESTful快速开发

这两部分太重复了,提出来写到类前面。每次都要定义method,有点长 也麻烦。

解释:

3.4 案例

配置类:

domain:

数据层:暂时没写,模拟的

controller:

然后还要配置成 RESTful 格式:

好了,可以开启服务器测试了。

4、SSM

4.1 整合配置

4.2 功能模块开发

4.3 接口测试

4.4 表现层与前端数据传输协议定义

4.5 表现层与前端数据传输协议实现

4.6 异常处理器

正常程序得到数据,异常就会抛出,那么异常如何处理?(目的是想要即使出现异常,前端也能收到消息,知道出问题了)

异常类型:


异常需要分类处理——>都放在表现层
——>处理异常的操作很多很重复,所以可以用AOP

ex:


解析:

定义好异常处理类后:

4.7 项目异常处理

首先会对异常分类:

创建系统异常处理类(因为系统异常和其他异常返回的消息一样)和业务异常处理类:
 

4.8 前后台协议联调

5、拦截器

SpringBoot

第一章 入门案例和简介

1、入门案例

分析:
全靠下面两个文件咯


不用idea,也可以基于SprinBoot官网创建项目。

2、程序快速启动

spring boot 可以脱离idea和Tomcat运行:


然后在命令行执行:

3、springboot 简介

3.1 起步依赖



3.2 辅助功能

3.3 切换web服务器

默认Tomcat,可使用排除依赖排除了它:

现在再启动就没有Tomcat了,可以换成jetty服务器:

总结

第二章:基础配置

4、配置文件格式



yml和yaml文件不自动提示:


5、yaml

5.1 yaml格式


5.2 yaml数据读取

法一:


法二:使用独立对象将所有对象都加载出来:


法三:

6、多环境开发

6.1 配置


properties配置文件的书写形式:



6.2 多环境启动命令格式

打包,然后命令行运行:

第一条指定环境为test,不指定就用默认的,也可以使用临时的端口,配置文件中没有。

有点坑:
打包前可以先clean,清理一下;也可能会出现中文原因打包失败——>改编码方式:

6.3 多环境开发兼容问题

如当maven和boot都进行了多环境开发的配置,谁为主?当然是maven,它执行的打包操作。

7、配置文件分类

问题:

第三章 整合

8、整合Junit



省略class,但不在同一个包或其子包下,测试会失败:

这里bookservice报错其实不是错,也不会影响运行,也能改动,之前讲了,我好像忘了.....

9、基于SpringBoot实现SSM整合

9.1 整合框架

复习spring整合mybatis:



这样在pom.xml中就加载上了mybatis整合相关的依赖,还有mysql依赖。

完成配置文件:yml文件,自己创建


如果不想用内置数据源,想要使用druid数据源,那就把druid坐标加入pom文件,在配置数据源的时候指定使用druid数据源。


不能忘了加mapper这个注解昂,要不然不知道要自动加载,这就是之前的mapper映射。


自动加载了,但前面别忘了使用mapper注解。

9.2 案例

在之前完成的那么ssm案例使用springboot来完成,之前需要写好多配置类,现在不用了所以全删


1、起步依赖:

web项目要选web依赖,使用mybatis,选择mybatis和mysql依赖

2、原来需要的配置类,全不要咯:

3、domain不用变,dao改动一下,加上一个@mapper,作用是使springboot能够扫描到这个组件,实现自动代理。

4、service和controller都不用变

5、resources:原来的jdbc.properties不需要了,新建一个springboot的配置文件yml文件,在这个文件中设置数据源和端口

6、测试类:
原本的

现在:

7、结合web静态页面

原本这些文件都是在web-app目录下,但在springboot中应该放在static目录下

8、开服务器,运行

有个简便操作,写个html文件,如下配置,不用再打想要访问的文件的路径了,直接是默认的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值