- 1 由 springboot 的 dto 拓展的内容
- 2 springboot 的 domain 中的 vo 是什么?
- 3 springboot 中创建多个模块创建、关联,后续如何打包呢?
- 4 springboot 模块化开发与项目搭建流程
- 5 如何让多模块的项目结构更加清晰、易于理解
- 6 PO、VO、DAO、BO、DTO、POJO 能分清吗?
- 7 控制反转 IoC 与依赖注入 DI
- 8 示例代码案例详细解释内容
- 9 基础项目功能简介带你入门挖坑
- 10 服务端部署
- 11 Spring Boot 整理大纲与数据结构实战
- 12 DAO 功能代码
- 13 MyBatis 讲解
- 14 MyBatis-CRUD 讲解
- 15 MyBatis 分页
- 16 一对多、多对一、SQL 缓存
- 17 Spring 我的春天
- 18 SpringMVC 我的春天
- 19 权限
- 20 Dubbo
- 21 SSO
- 22 security、Lombok、token、redis
- 23 login 与 register 代码流程
- 24 架构 mongodbmanager,Redis,Mybatis,Spring Security
- 25 实体类定义规则
- 26 centos 和 docker
11 Spring Boot 整理大纲与数据结构实战
1、springboot概述
springboot介绍
springboot的核心功能
springboot的优势
2、springboot快速入门
创建Maven工程
添加SpringBoot的启动器
编写SpringBoot引导类
编写Controller
测试
3、springboot原理分析
起步依赖原理分析
分析spring-boot-starter-parent
分析spring-boot-starter-web
SpringBoot配置文件类型
SpringBoot配置文件类型和作用
yml配置文件简介
yml配置文件的语法
SpringBoot配置信息的查询
配置文件与配置类的属性映射方式
使用注解@Value映射
使用注解@ConfigurationProperties映射
springboot整合Junit
添加Junit的启动器
编写测试类
控制台打印信息
springBoot整合Redis
使用redisTemplate存取字符串
springboot整合mybatis
添加Mybatis的启动器
创建实体Bean
编写Mapper
配置Mapper映射文件
在application.properties中添加mybatis的信息
编写测试Controller
SpringBoot自动配置
@Conditional自动配置(编码案例)
SpringBoot @Enable*
注解的工作原理
@EnableAutoConfiguration
@EnableAsync
@Enable*注解原理
@Enable*注解其实是使用@Import注解导入固定配置类,配置类中实现具体逻辑
配置类一般是实现了ImportSelector等接口的实现类,可以根据具体逻辑动态返回Bean
@Import
ImportSelector接口
ImportBeanDefinitionRegistrar接口
案例:自定义注解(使指定的包下面的Bean初始化时候打印Bean的名字)
自定义注解
配置类
Bean初始化操作类
测试
SpringBoot @EnableAutoConfiguration
深入分析
作用
从classpath下搜索所有META-INF目录下的spring.factories配置文件
将org.springframework.boot.autoconfigure.EnableAutoConfiguration
对应的值注入spring容器中,一般配置其他配置类
当需要加载第三方或者多个配置类时,加载配置中的属性时,
用此注解,必须建立spring.factories配置文件,进行相关配置
可以进行排除
根据类与类名
原理
事件监听流程
配置监听器
Springappliaction.addListener(new MyListener())
或者@Component在监听类
或者配置文件中context.listener.classes=com.hou.MyListener来配置加载
使用@EventListener注解在方法上,且方法的类要加入容器中
ApplicationContext.publishEvent():发布事件
@EventListener
SpringBoot扩展分析
ApplicationContextInitializer接口
CommandLineRunner接口
ApplicationRunner接口
Banner
SpringBoot运行流程分析
运行流程(可查看SpringApplication源码)
内置Tomcat启动流程
WeChat9c3fe57f77d933616c18d92b0e56169c.jpgSpringBoot 原理分析
SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、配置属性、日志信息等。
导入依赖坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Spring Boot 监控
SpringBoot 项目部署
/beans
描述应用程序上下文里全部的Bean,以及它们的关系
/env
获取全部环境属性
/env/{name}
根据名称获取特定的环境属性值
/health
报告应用程序的健康指标,这些值由HealthIndicator的实现类提供
/info
获取应用程序的定制信息,这些信息由info打头的属性提供
/mappings
描述全部的URI路径,以及它们和控制器(包含Actuator端点)的映射关系
/metrics
报告各种应用程序度量信息,比如内存用量和HTTP请求计数
/metrics/{name}
报告指定名称的应用程序度量值
/trace
提供基本的HTTP请求跟踪信息(时间戳、HTTP头等)
SpringBoot 监控 用于管理和监控SpringBoot应用程序。
有两个角色,客户端(Client)和服务端(Server)。
SpringBoot 项目开发完毕后,支持两种方式部署到服务器:
① jar包(官方推荐)
② war包
Condition
Condition 是在Spring 4.0 增加的条件判断功能,通过这个可以功能可以实现选择性的创建 Bean 操作。
SpringBoot是如何知道要创建哪个Bean的?比如SpringBoot是如何知道要创建RedisTemplate的?
自定义Starter
Spring Boot Actuator
Spring Boot Actuator简介
监控应用
SpringBootAdmin
索引的实现原理.png请求URL
/api/v1/admin/login
请求方式
- post
Header
header | 示例值 | 必选 | 类型 | 说明 |
---|---|---|---|---|
Authorization | {{token}} | 是 | string | 无 |
{ "userName": "admin", "password": "123456" }
请求json字段说明
字段名 | 必选 | 类型 | 说明 |
---|---|---|---|
userName | 是 | string | 用户名 |
password | 是 | string | 用户登录密码 |
成功返回示例
{
"data": {
"token": "xxxxx",
"userName": "admin"
},
"msg": "登录成功",
"code": 0
}
成功返回示例的参数说明
参数名 | 类型 | 说明 |
---|---|---|
data | object | 无 |
token | string | token,后续接口置于header里 |
userName | string | 用户名 |
msg | string | 接口描述 |
code | string | 0为成功 |
备注
登录接口的header不需要Authorization
简要描述
- 用户退出登录
请求URL
/api/v1/admin/logout
请求方式
- post
Header
header | 示例值 | 必选 | 类型 | 说明 |
---|---|---|---|---|
Authorization | {{token}} | 是 | string | 无 |
成功返回示例
{
"code": 0,
"data": null,
"msg": "退出登录成功"
}
成功返回示例的参数说明
参数名 | 类型 | 说明 |
---|---|---|
data | object | 无 |
msg | string | 接口描述 |
code | string | 0为成功 | |
上传图片
请求Body参数
参数名 | 示例值 | 必选 | 类型 | 说明 |
---|---|---|---|---|
file | 是 | file | 选择的文件,formData上传 |
成功返回示例
[
{
"hash":"xxx",
"key":"xx.png",
"url":"http://xx.xx.top/xx.png"
}
]
成功返回示例的参数说明
参数名 | 类型 | 说明 |
---|---|---|
hash | string | 无 |
key | string | 无 |
url | string | 图片的地址 |
请求Query参数
参数名 | 示例值 | 必选 | 类型 | 说明 |
---|---|---|---|---|
page | 1 | 否 | number | 当前页,默认1开始 |
pageSize | 20 | 否 | number | 当前页数,默认20 |
title | 否 | string | 标题搜索,默认空 | |
categories | 否 | string | 分类搜索,默认空 | |
tags | 是 | string | 多选用英文逗号隔开【React,ES7,Vue】默认空 | |
status | 0 | 否 | string | 文章状态0=全部,1=启用,2=停用 |
publishStatus | 0 | 否 | string | 发布状态0=全部,1=已发布,2=未发布 |
createStartTime | 否 | number | 10位时间戳 | |
createEndTime | 否 | number | 10位时间戳 | |
updateStartTime | 否 | number | 10位时间戳 | |
updateEndTime | 否 | number | 10位时间戳 |
成功返回示例的参数说明
参数名 | 类型 | 说明 |
---|---|---|
data | object | 无 |
page | string | 当前页 |
pageSize | string | 当前页数 |
totalCount | string | 总数 |
list | array | 无 |
list.tags | array | 标签 |
list.tags | string | 标签 |
list.views | string | 浏览数 |
list.comment | string | 评论数 |
list.like | string | 点赞数 |
list.collect | string | 收藏数 |
list.isComment | string | 是否开启评论 |
list.isLike | string | 是否开启点赞 |
list.isCollect | string | 是否开启收藏 |
list.isReward | string | 是否开启打赏 |
list.status | string | 文章状态1=启用,2=停用 |
list.publishStatus | string | 发布状态1=已发布,2=未发布 |
list.sort | string | 排序 |
list.createTime | number | 创建时间-10位时间戳 |
list.updateTime | number | 修改时间-10位时间戳 |
list._id | string | Objectid |
list.content | string | 文章内容 |
list.title | string | 文章标题 |
list.introduction | string | 简介 |
list.cover | string | 封面 |
list.categories | string | 分类 |
msg | string | 无 |
code | string | 无 |
修改文章状态
请求方式
- put
请求json字段说明
字段名 | 必选 | 类型 | 说明 |
---|---|---|---|
id | 是 | string | 标签id,url中必填 |
status | 是 | number | 1=启用,2=停用 |
成功返回示例
{
"msg": "文章启用成功",
"data": null,
"code": 0
}
成功返回示例的参数说明
参数名 | 类型 | 说明 |
---|---|---|
msg | string | 接口描述 |
data | object | 无 |
code | string | 0为成功 |
分类列表
请求Query参数
参数名 | 示例值 | 必选 | 类型 | 说明 |
---|---|---|---|---|
page | 1 | 否 | number | 页码默认1 |
pageSize | 20 | 否 | number | 每页大小默认20 |
name | 技术 | 否 | string | 分类名称 |
成功返回示例的参数说明
参数名 | 类型 | 说明 |
---|---|---|
data | object | 无 |
page | string | 页码 |
pageSize | string | 每页数量 |
totalCount | string | 总数 |
list | array | 无 |
list.createTime | string | 创建时间 |
list.updateTime | string | 修改时间 |
list.articleNum | string | 文章数量 |
list._id | string | ObjectId |
list.name | string | 分类名称 |
msg | string | 接口描述 |
code | string | 0为成功 |
修改分类
请求URL
/api/v1/categories/:id
请求方式
- put
1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?
数据库: 英文单词DataBase,简称DB。按照一定格式存储数据的一些文件的组合。 顾名思义:存储数据的仓库,实际上就是一堆文件。这些文件中存储了 具有特定格式的数据。
数据库管理系统: DataBaseManagement,简称DBMS。 数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以 对数据库当中的数据进行增删改查。
常见的数据库管理系统:
MySQL、Oracle、MS SqlServer、DB2、sybase等....
SQL:结构化查询语言 程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL 语句,最终来完成数据库中数据的增删改查操作。
SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用,
同时在Oracle中也可以使用,在DB2中也可以使用。
三者之间的关系? DBMS--执行--> SQL --操作--> DB
先安装数据库管理系统MySQL,然后学习SQL语句怎么写,编写SQL语句之后,DBMS 对SQL语句进行执行,最终来完成数据库的数据管理。
2、安装MySQL数据库管理系统。
第一步:先安装,选择“经典版”
第二步:需要进行MySQL数据库实例配置。
需要注意的事项?
端口号:
端口号port是任何一个软件/应用都会有的,端口号是应用的唯一代表。
端口号通常和IP地址在一块,IP地址用来定位计算机的,端口号port
是用来定位计算机上某个服务的/某个应用的!
在同一台计算机上,端口号不能重复。具有唯一性。
mysql数据库启动的时候,这个服务占有的默认端口号是3306
这是大家都知道的事儿。记住。
字符编码方式?
设置mysql数据库的字符编码方式为 UTF8
一定要注意:先选中第3个单选按钮,然后再选择utf8字符集。
服务名称?
默认是:MySQL
不用改。
选择配置环境变量path:
如果没有选择怎么办?你可以手动配置
path=其它路径;C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin
mysql超级管理员用户名不能改,一定是:root 你需要设置mysql数据库超级管理员的密码。 我们设置为123456
3、MySQL数据库的完美卸载!
第一步:双击安装包进行卸载删除。
第二步:删除目录:
把C:\ProgramData下面的MySQL目录干掉。
把C:\Program Files (x86)下面的MySQL目录干掉。
4、看一下计算机上的服务,找一找MySQL的服务在哪里?
计算机-->右键-->管理-->服务和应用程序-->服务-->找mysql服务
MySQL的服务,默认是“启动”的状态,只有启动了mysql才能用。
默认情况下是“自动”启动,自动启动表示下一次重启操作系统的时候 自动启动该服务。
可以在服务上点击右键:
启动
重启服务
停止服务
...
还可以改变服务的默认配置:
服务上点击右键,属性,然后可以选择启动方式:
自动(延迟启动)
自动
手动
禁用
mysql安装了,服务启动了,怎么使用客户端登录mysql数据库呢?
使用bin目录下的mysql.exe命令来连接mysql数据库服务器
mysql常用命令:
退出mysql :exit
查看mysql中有哪些数据库?
show databases;
注意:以分号结尾,分号是英文的分号。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
mysql默认自带了4个数据库。
怎么选择使用某个数据库呢?
mysql> use test;
Database changed
表示正在使用一个名字叫做test的数据库。
怎么创建数据库呢?
mysql> create database bjpowernode;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bjpowernode |
| mysql |
| performance_schema |
| test |
+--------------------+
查看某个数据库下有哪些表?
mysql> show tables;
注意:以上的命令不区分大小写,都行。
查看mysql数据库的版本号:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.5.36 |
+-----------+
查看当前使用的是哪个数据库?
mysql> select database();
+-------------+
| database() |
+-------------+
| bjpowernode |
+-------------+
关于SQL语句的分类?
SQL语句有很多,最好进行分门别类,这样更容易记忆。
分为:
DQL:
数据查询语言(凡是带有select关键字的都是查询语句)
select...
DML:
数据操作语言(凡是对表当中的数据进行增删改的都是DML)
insert delete update
insert 增
delete 删
update 改
这个主要是操作表中的数据data。
DDL:
数据定义语言
凡是带有create、drop、alter的都是DDL。
DDL主要操作的是表的结构。不是表中的数据。
create:新建,等同于增
drop:删除
alter:修改
这个增删改和DML不同,这个主要是对表结构进行操作。
TCL:
是事务控制语言
包括:
事务提交:commit;
事务回滚:rollback;
DCL:
是数据控制语言。
例如:授权grant、撤销权限revoke....
单表的查询
select
...
from
...
where
...
group by
...
having
...
order by
...
以上关键字只能按照这个顺序来,不能颠倒。
执行顺序?
1. from
2. where
3. group by
4. having
5. select
6. order by
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论