SpringBoot基础篇知识点
一、导学
官网:https://spring.io/projects/spring-boot
二、入门案例
2.1、idea联网版
2.2、官网创建版
2.3、阿里云版
2.4、手工制作版
三、隐藏文件或文件夹(联网创建比手动创建多出来git等文件)
四、入门案例解析
4.1、parent
https://www.bilibili.com/video/BV15b4y1a7yG?p=8&vd_source=5061eb5d9c29eda75a5e1981cbcb4d12
4.2、starter
4.3、引导类
4.4、辅助功能(内嵌Tomcat)
4.5、Rest风格简介
4.6、Restful入门案例
在使用springmvc框架的时候,在处理json的时候需要用到spring框架特有的注解@ResponseBody或者@RestController注解, 这两个注解都会处理返回的数据格式,使用了该类型注解后返回的不再是视图,不会进行转跳,而是返回json或xml数据格式,输出在 页面上 。
那么,这两个注解在使用上有什么区别呢?
@ResponseBody,(1)一般是使用在单独的方法上的,需要哪个方法返回json数据格式,就在哪个方法上使用,具有针对性。(2)一般是使用在参数上,将json格式的数据转为java对象,并注入对应参数中。
@RestController,一般是使用在类上的,它表示的意思其实就是结合了@Controller和@ResponseBody两个注解,如果哪个类下的所有方法需要返回json数据格式的,就在哪个类上使用该注解,具有统一性;需要注意的是,使用了@RestController注解之后,其本质相当于在该类的所有方法上都统一使用了@ResponseBody注解,所以该类下的所有方法都会返回json数据格式,
输出在页面上,而不会再返回视图。
https://jingyan.baidu.com/article/624e7459069f4034e8ba5a87.html
4.7、Restful快速开发
五、基础配置
5.1、属性配置
5.1.1 配置方式
maven结构下,配置文件都写在resources目录下,application.properties就是springboot使用的默认配置文件
5.1.2 基础配置
5.2、配置文件分类
5.2.1、 属性配置提示消失解决方案
5.3、yaml文件
5.4、yaml数据读取
5.4.1、读取yaml全部属性数据
为防止定义变量过多,通过定义Environment变量自动注入方式,解决问题
5.4.2、读取yaml引用类型属性数据
一旦使用关于Spring的注解出现在类里,例如我在实现类中用到了@Autowired注解,被注解的这个类是从Spring容器中取出来的,那调用的实现类也需要被Spring容器管理,加上@Component
六、整合第三方技术
6.1、整合Junit
1、@component是通用性的注解,@service 和@repository则是在@component的基础上添加了特定的功能。所以@component可以替换为@service和@repository,但是为了规范,服务层bean用@service,dao层用@repository。就好比代码规范,变量、方法命名一样。还有一点,正如文档描述那样:
2、@Repository的工作是捕获特定于平台的异常,并将它们作为Spring统一未检查异常的一部分重新抛出。为此,提供了PersistenceExceptionTranslationPostProcessor。
3、如果在dao层使用@service,就不能达到这样的目的。
使用@SpringBootTest时并没有像@ContextConfiguration一样显示指定locations或classes属性,原因在于@SpringBootTest注解会自动检索程序的配置文件,检索顺序是从当前包开始,逐级向上查找被@SpringBootApplication或@SpringBootConfiguration注解的类。
https://www.bilibili.com/video/BV15b4y1a7yG?p=27&spm_id_from=pageDriver&vd_source=5061eb5d9c29eda75a5e1981cbcb4d12
6.2、整合Mybatis
1、使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中
2、@Mapper注解是由Mybatis框架中定义的一个描述数据层接口的注解,注解往往起到的都是一个描述性作用,用于告诉sprigng框架此接口的实现类由Mybatis负责创建,并将其实现类对象存储到spring容器中。
6.2.1 常见问题
6.3、整合Mybatis-Plus
6.4、整合Druid
Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、Proxool等DB池的优点,同时加入了 日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池,可以说是目前最好的 连接池之一。
以下是两种配置方法:
7、SSMybatis-Plus整合案例制作分析
快捷键:
(1)ALT+7查看类中所有的方法
(2)ALT + Insert 调出generate实现get、set方法
(3)Ctrl + I 实现接口的抽象方法
(4)Ctrl + O 查看类中继承的方法
7.1 模块创建
7.2 实体类快速开发(lombok)
7.3 数据层标准开发(基础CRUD)
7.4 开启Mybatis-Plus运行日志
7.5 分页
用到了Mybatis-Plus的分页功能,其中分页功能需要Mybatis-Plus的拦截器才能成功实现,拦截器是怎么实现的呢?不管我们做什么,整体上还是spring程序,做的所有东西都得受spring管理,spring是用来管bean的,在这里就需要用spring管理第三方bean的方式,把这个bean初始化出来并加载给spring容器。
第一步:在类上用@configuration,把类变成配置类,这里面的配置信息回头会被读取到。
第二部:我们去做对于的bean,用@bean public MybatisPlusInterceptor mybatisPlusInterceptor( ),在这个方法中把拦截器创建出来,添加内部分页拦截器,并return出去就好了
7.6 数据层标佳开发(条件查询)
7.7 业务层标准开发(基础CRUD)
Test包下测试
7.8 业务层快速开发(基于MyBatisPlus构建)
7.9 表现层标准开发
7.10 表现层数据—致性处理(R对象)
下面BookController2就是目录7.9实现的表现层BookController,为了这一章内容,改名成BookController2,并且把@RestController注释,避免被加载成Spring的bean,影响这一章的内容。
7.11 前后端调用(axios发送异步请求)
了解Book.html前端页面一些布局内容,具体看上面链接视频
下面的操作是,根据vue里的created()钩子函数让页面初始化时执行对应操作,这里让操作台打印数据。res.data是后端返回的所有数据,包括flag和data,如果要单独取出data这写成res.data.data。
7.12 列表功能
7.13 添加功能
axios会把表单数据转成json格式发送给后端
7.14 删除功能
scope.row是elementui传递数据的一种方式,它将整个行对象封装成scope,row指的是这一行的数据
7.15 修改功能(加载数据)
7.16 修改功能
7.17 异常消息处理
以下是介绍异常消息处理方法,例子是:根据一个固定触发的if抛出异常
以下是第二个例子,让前端错误消息弹窗的消息,来自于后端
抛出异常消息有前端管的,也有后端管的,这样不好。
有两种方法:(1)是全部交给前端管,各种异常考虑到,并写在前端;(2)是交给后端管,前端根据后端传递的异常消息,弹出消息窗口提示。
以下是第二种方法:
7.18 分页
7.19 分页功能维护(删除BUG)
7.20 条件查询
7.21 基础篇完结
8 部分知识点补充
8.1 get和post详解
1、Get和post是表单提交数据的两种基本方式,get请求数据通过域名后缀url传送,用户可见,不安全,post请求数据通过在请求报文正文里传输,相对比较安全。
2、get是通过url传递表单值,post通过url看不到表单域的值;
3、get传递的数据量是有限的,如果要传递大数据量不能用get,比如type=“file”上传文章、type=“password”传递密码或者< text area >发 Get和post是表单提交数据的两种基本方式,get请求数据通过域名后缀url传送,用户可见,不安全,post请求数据通过在请求报文正文里传输,相对比较安全。
4、get是通过url传递表单值,post通过url看不到表单域的值;
5、get传递的数据量是有限的,如果要传递大数据量不能用get,比如type=“file”上传文章、type=“password”传递密码或者< text area >发表大段文章,post则没有这个限制;
6、post会有浏览器提示重新提交表单的问题,get则没有(加分的回答)
对于Post的表单重新敲地址栏再刷新就不会提示重新提交了,因为重新敲地址就没有偷偷提交的数据了。Post方式的正确的地址很难直接发给别人。
GET和POST的区别
- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
- GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
- GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
GET是从服务器上获取数据,POST是向服务器传送数据。
GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据
GET传送的数据量较小,不能大于2KB(这主要是因为受URL长度限制)。POST传送的数据量较大,一般被默认为不受限制。但理论上,限制取决于服务器的处理能力。
GET安全性较低,POST安全性较高。因为GET在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。POST的所有操作对用户来说都是不可见的。
8.2 ElementUI中<el-form>标签中 ref、:model、:rules 的作用
(1)
(2)
8.3 axios和ajax区别
1、功能不同
Axios:Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 ***.js 中。
AJAX:AJAX 是与服务器交换数据并更新部分网页的,在不重新加载整个页面的情况下Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
2、特点不同
Axios从浏览器中创建 XMLHttpRequests,可以从 .js 创建 http 请求,支持 Promise API,可以拦截请求和响应、转换请求数据和响应数据。
Ajax是一种用于创建快速动态网页的技术,Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
3、部分参数不同
Axios:
axios({
url: 'http://jsonplaceholder..com/users’,
method: ‘get’,
responseType: ‘json’, // 默认的
data: {
//‘a’: 1,
//‘b’: 2,
}
}).then(function (response) {
***.log(response);
.log(.data);
}).catch(function (error) {
.log(error);
})
Ajax:
$.ajax({
url: 'http://jsonplaceholder..com/users’,
type: ‘get’,
dataType: ‘json’,
data: {
//‘a’: 1,
//‘b’: 2,
},
success: function (response) {
***.log(response);
}
})
扩展资料:
axios的实例方法:
以下是可用的实例方法。指定的配置将与实例的配置合并
axios#request(config)
axios#get(url[, config])
axios#delete(url[, config])
axios#head(url[, config])
axios#post(url[, data[, config]])
axios#put(url[, data[, config]])
axios#patch(url[, data[, config]])