【视频笔记】Spring Boot 博客

Spring Boot 博客

Com.公司名.项目名

创建工程

  1. 找到启动类
  2. 相当于项目的入口
  3. 项目创完右边有个maven

1. 环境搭建

基础知识

  1. < parent>标签 : 父类,继承自哪一类
  2. 阿里云和官方的 Server URL
    1. 把项目构建在哪
  3. <artifactId>标签
    1. 实际对应项目的名称,就是项目根目录的名称。

报错

  1. 版本号报错
  2. 没有自动导包

各种包

是Spring MVC的分层

Config

配置

MyBatisPlusConfig

拦截器,用来分页
拦住的是数据库那边的数据
请求(WebService) — 服务器 — 数据库(MyBatisPlus的拦截器)

WebMVCConfig

Controller

  1. 控制器
  2. 也是接口,但和interface不一样
  3. 暴露给前端的接口

dao

mapper
  1. 接口,和数据库操作的接口
  2. 有泛型,操作的就是泛型的类型
  3. BaseMapper
    1. 继承该接口后,
    2. 无需编写 mapper.xml 文件,
    3. 即可获得CRUD功能
  4. 多表查询等的就是要写SQL语句了
pojo

实体类,有时也用entity

service

  1. 业务包
  2. 调用对应的接口
  3. 比如登录
  4. 调用dao
impl

vo

参数
返回值
  1. 统一结果封装
    1. 不管是什么类型,都封装成Result
    2. 标准
  2. service
    1. 接口
    2. 还有个实现类包 Impl
    3. 接口

添加的各个依赖的介绍

再添加两个标签

  1. dependencyManagement
    1. 方便管理
  2. packaging
    1. 声明为父工程

以上是父工程,再建立子工程

  1. 再把依赖导进去

对子工程配置

  1. 在子工程 src - main - Resourcs - new file
  2. applica.properties

applica.properties

可以删掉的部分

  1. 不需要写版本的部分
  2. 父类已经有了

数据库驱动报红

  1. Maven
  2. Reload一下

加上MyBatis Plus的配置

  1. 表名的前缀

新建启动类

  1. @SpringBootApplication注解

MyBatisPlus的实现类MyBatisPlusConfig

注解

分页插件

  1. 拦截器

WebMvcConfig实现接口WebMvcConfigurer

  1. 加入CorsMappings
    1. 跨域配置
    2. 前端8080和后端8888,端口不一样
    3. 有个跨域配置,要允许8080访问

总结,先建立父工程再建各个模块

2. 第一个功能:文章列表

pojo

Mapper

  1. 每个实体类新建一个接口
  2. 继承自BaseMapper<>

controller

  1. 需要用到
    1. 参数
    2. 返回值
    3. 都建立新的类

vo包

为什么都要拿到别的地方

  1. 相当于和页面交互的数据
    1. 不和数据库完全一致

params包

  1. 全是参数

返回值类

service

service接口

ArticleServiceImpl
  1. 不能和数据库完全一致
  2. 要和页面向交互的vo包
  3. 讲将Article转为ArticleVo
处理数据库数据
  1. copy
    1. 处理单个
  2. copyList
    1. 全部处理掉
  3. 有些不能Copy的,
    1. set方法

ArticleServiceImpl

建立Resource下的目录,要和Mapper一致

建立Tagmapper.xml

  1. 标签内写什么
    1. 使用快捷键创建SQL语句
  2. 没有自动提示
    1. 关联数据库

3. 最热标签

前端工程

后端工程

Controller

  1. TagsController

TagService

TagServiceImpl

查询1

SQL 语句
  1. 别名的作用
实现
使用插件生成SQL语句
  1. 加上
    1. 参数类型
    2. 自己写的SQL

查询2

为什么需要第二个SQL语句

SQL语句的特殊写法

  1. 别名
  2. for循环?

Mapper

  1. 没有内容
  2. 内容在XML中

配置Swagger文档

添加依赖

yml文件

逻辑过程

controller -> service -> mapper

3. 统一异常处理

有可能有意料之中的异常,意料之外的异常

新建一个包handler

新建一个类

加个注解
  1. 一个拦截器
  2. AOP的实现

4. 首页,

最热文章

最新文章

  1. controller
  2. service
  3. serviceImpl
    1. 写SQL语句

文章归档

  1. 按照时间,显示某时间发了多少文章的:档案

在dao下,新建dos包

  1. 也是数据库查询来的,但不需要持久化的数据

SQL 语句处理

  1. 在Impl把所有前台的内容处理完。
  2. 转入SQL
就是转入Mapper进行
  1. 还没有文件
    1. 建立Mapper
  2. 关联Mapper接口
    1. namespace
Mapper的SQL语句如何写
  1. Mapper里面写SQL语句对应的标签
    1. id要对应方法
    2. resultType返回值类型对应好类
  2. 里面写SQL语句

5. 登录 准备

接口介绍

  1. 返回的是个token

jwt

  1. 可以理解为一个加密的算法
token
  1. 令牌
组成

本身就是个JSON
三部分:A.B.C

A部分

header部分
内容相对固定
容易被解密,无所谓

B部分

自定义信息,可以存东西
不能存放敏感信息,可以被解密

C部分

A+B+密钥组成

JWT验证

主要验证的是C部分

使用

  1. 添加依赖
    1. 子类的pom文件
  2. 建立util包
    1. 工具类
    2. copy工具类进取

6. 登录功能

整合Redis

介绍

https://blog.csdn.net/lydms/article/details/105224210

yml文件,如何配置Redis

https://www.cnblogs.com/rainbow70626/p/15785754.html

7. 获取用户信息

8. 退出登录

  1. 接口说明
    1. 还是使用token来确定退出的是哪个账户

9. 注册

大步骤一

  1. 把controller类写好之后
  2. 方法中想的是,把交给哪个Service处理
  3. 需要用到某个功能,想到他的service

大步骤二

  1. 把Service写好
  2. Impl
  3. 加上事务
    1. redis也要启动才能成功

10. 登录拦截器

  1. 可不可以统一进行登录判断
  2. 防止一旦登录的逻辑有变

Spring MVC里的知识点——登录拦截器

  1. 需要登录才能访问的接口,如果未登录就直接拦截

代码实现

  1. handler包

11. ThreadLocal保存用户信息

  1. 希望在Controller中直接获取用户信息如何获取

Util包下创建

ThreadLocal介绍

  1. 做线程变量隔离
  2. ThreadLocal是空间换时间,Synchronized是时间换空间???

ThreadLocal内存泄露

  1. 线程会持有一个Map

强引用和弱引用

强引用
  1. 不会被GC回收,
  2. 内存空间不足宁愿抛出异常
  3. 如果想取消,就赋值为null
弱引用
  1. 有空间也会被干掉

ThreadLocal内存泄露

  1. Map中key是弱引用,会被干掉
  2. value还在?永远都在

12. 文章详情

ServiceImpl中如何写

  1. 步骤分析
  2. 需要哪些vo
    1. 或者实体类
  3. 从数据库把这些类赋值

数据库如何赋值

  1. Mapper对象,打点,调用

Mapper如何写

  1. 创建出类
  2. @Repository注解
  3. 去xml中对应

13. 文章详情:阅读量

多线程

  1. 阅读量功能
  2. 需要更新时是加写锁
  3. 会阻塞线程

修正bug

  1. 发现更新的SQL语句和预期不一样
  2. 解决
    1. 把int改为Integer
    2. 一定要用封装的类型
    3. 不能使用基本类型

13. 文章详情:评论列表

Controller

  1. 所有的方法返回的类型都是Result
  2. 但是真正函数的返回是一个Service
    1. Result对象在Service中生成

Autowired

  1. 在Controller中注入Service
  2. Impl类中注入Mapper
  3. Impl类中注入别的Service

Impl实现类

  1. 逻辑

.var可以做什么

LambdaQueryWrapper类

  1. 查询条件
  2. .eq()方法

BeanUtils类

14. 评论功能

  1. 要加入到登录拦截器

bug

  1. 这里要修改SQL表的结构
  2. 后端数据太长了,前端会丢失一些位数
    1. 导致精度丢失
    2. 序列化,把Long id
    3. 转成String
    4. 就不会精度丢失

15. 写文章

  1. 有MarkDown的功能

文章分类

文章所有标签

写文章

  1. 拦截器拦截了才能用UserThreadLocal?

16. AOP日志

开发注解

  1. 创建注解
  2. 开发AOP

17. 图片上传功能

  1. 参数的注解
    @RequestParam
  2. 上传随机的文件名称
  3. 图片服务器
    1.

七牛云

初步

  1. 密码:Mklose11.
  2. 对象存储kodo
  3. 新建空间

域名

  1. 绑定了自己的

使用

  1. 文档
    1. 开发者中心
  2. 对象存储
  3. SDK下载
    1. JAVA SDK
    2. Maven
 <dependency>
  <groupId>com.qiniu</groupId>
  <artifactId>qiniu-java-sdk</artifactId>
  <version>[7.7.0, 7.7.99]</version>
</dependency>

工具类

  1. 下拉,翻阅到代码介绍
    1. 字节数组上传
  2. 代码有变化
    1. accessKey
    2. secretKey
    3. 在:个人中心 - 密钥管理
  3. 七牛云配置
    https://blog.csdn.net/weixin_52025712/article/details/116932311?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_default&utm_relevant_index=1

工具类的使用

  1. Configuration选对地区
  2. accessKey/accessSecretKey/bucket
  3. url
    1. 使用他给的
    2. 格式要写对
    3. http:// ***** /

18. 后面的功能

SQL语句

  1. and 条件

逻辑

自定义SQL语句

  1. 创建XML文件
  2. 在xml中写好id 和 namespace
  3. 使用 resultMap标签 来映射
  4. where标签

优化

1. 统一缓存处理

  1. 内存访问速度更大
  2. 统一做缓存处理
  3. 使用aop

使用AOP注解

  1. 定义一个切点
  2. 加在哪哪就是切点
  3. 加注解

结果

  1. 在一定时间内
  2. 拦住所有密集访问
  3. 使其走缓存

2. 精度损失

  1. 加上缓存之后出现精度损失,按照Long处理了
  2. Long 改为 String

3.

  1. 文章可以放入es中
  2. 评论功能优化,可以加入表情等
    1. mongodb
  3. 阅读数,评论数。增加的放入Redis
    1. 定时把数据固化到数据库
    2. 目前情况下还是加了锁,并发量大时麻烦
  4. 为了加快访问速度,部署的时候,可以把图片,js,css等放入七牛云存储中,加快网站访问速度

前端

1. 层次结构

  1. 配置文件
    1. 环境
    2. 生产环境
  2. 图片
    1. 对应数据库
  3. 源码
    1. 后端访问的接口

2. 找对应的代码

3. 配置前后端交互

config

  1. dev.env.js
    1. 环境
  2. prod.env
    1. 生产环境
  3. api
    1. 后端访问接口

4. 运行

Chmod -R 777  文件位置
npm run dev 
  1. 改文章标题
    1. index.html
    2. router - index.js
    3. component
      1. BaseFooter.vue
  2. 所有文字都在 components

后台

部署

1. 打包

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值