前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot第11集:Spring Boot整理大纲与数据结构实战

springboot第11集:Spring Boot整理大纲与数据结构实战

作者头像
达达前端
发布2023-10-08 18:16:03
1530
发布2023-10-08 18:16:03
举报
文章被收录于专栏:达达前端达达前端
35dbadbdad3da42c685404047c53b2d7.png
35dbadbdad3da42c685404047c53b2d7.png

1、springboot概述

代码语言:javascript
复制
springboot介绍
springboot的核心功能
springboot的优势

2、springboot快速入门

代码语言:javascript
复制
创建Maven工程
添加SpringBoot的启动器
编写SpringBoot引导类
编写Controller
测试

3、springboot原理分析

代码语言:javascript
复制
起步依赖原理分析
	分析spring-boot-starter-parent
	分析spring-boot-starter-web

SpringBoot配置文件类型

代码语言:javascript
复制
SpringBoot配置文件类型和作用
yml配置文件简介
yml配置文件的语法
SpringBoot配置信息的查询

配置文件与配置类的属性映射方式

代码语言:javascript
复制
使用注解@Value映射
使用注解@ConfigurationProperties映射

springboot整合Junit

代码语言:javascript
复制
添加Junit的启动器
编写测试类
控制台打印信息

springBoot整合Redis

代码语言:javascript
复制
使用redisTemplate存取字符串

springboot整合mybatis

代码语言:javascript
复制
添加Mybatis的启动器
创建实体Bean
编写Mapper
配置Mapper映射文件
在application.properties中添加mybatis的信息
编写测试Controller

SpringBoot自动配置

代码语言:javascript
复制
@Conditional自动配置(编码案例)

SpringBoot @Enable*注解的工作原理

代码语言:javascript
复制
@EnableAutoConfiguration
@EnableAsync
	
@Enable*注解原理
	@Enable*注解其实是使用@Import注解导入固定配置类,配置类中实现具体逻辑
	配置类一般是实现了ImportSelector等接口的实现类,可以根据具体逻辑动态返回Bean
@Import
ImportSelector接口
ImportBeanDefinitionRegistrar接口
	
案例:自定义注解(使指定的包下面的Bean初始化时候打印Bean的名字)
	自定义注解
		
	配置类
		
	Bean初始化操作类
		
	测试

SpringBoot @EnableAutoConfiguration深入分析

代码语言:javascript
复制
作用
	从classpath下搜索所有META-INF目录下的spring.factories配置文件
            
	将org.springframework.boot.autoconfigure.EnableAutoConfiguration
            对应的值注入spring容器中,一般配置其他配置类
            
	当需要加载第三方或者多个配置类时,加载配置中的属性时,
            用此注解,必须建立spring.factories配置文件,进行相关配置
            
	可以进行排除
		根据类与类名
原理

事件监听流程

代码语言:javascript
复制
配置监听器
	Springappliaction.addListener(new MyListener())
	或者@Component在监听类
	或者配置文件中context.listener.classes=com.hou.MyListener来配置加载
	使用@EventListener注解在方法上,且方法的类要加入容器中
            
ApplicationContext.publishEvent():发布事件
    
    @EventListener

SpringBoot扩展分析

代码语言:javascript
复制
ApplicationContextInitializer接口
CommandLineRunner接口
ApplicationRunner接口
Banner

SpringBoot运行流程分析

代码语言:javascript
复制
运行流程(可查看SpringApplication源码)
内置Tomcat启动流程
30431c26933da6c1cad675ed15f8a3e7.jpeg
30431c26933da6c1cad675ed15f8a3e7.jpeg

WeChat9c3fe57f77d933616c18d92b0e56169c.jpg

SpringBoot 原理分析

SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、配置属性、日志信息等。

导入依赖坐标

代码语言:javascript
复制
<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

Spring Boot 监控

SpringBoot 项目部署

代码语言:javascript
复制
/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

代码语言:javascript
复制
Spring Boot Actuator简介
监控应用
SpringBootAdmin
fc57852b20922d4347740b3bad003c2b.png
fc57852b20922d4347740b3bad003c2b.png

索引的实现原理.png

请求URL
  • /api/v1/admin/login
请求方式
  • post
Header

header

示例值

必选

类型

说明

Authorization

{{token}}

string

{ "userName": "admin", "password": "123456" }

请求json字段说明

字段名

必选

类型

说明

userName

string

用户名

password

string

用户登录密码

成功返回示例
代码语言:javascript
复制
{
  "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

成功返回示例
代码语言:javascript
复制
{
  "code": 0,
  "data": null,
  "msg": "退出登录成功"
}
成功返回示例的参数说明

参数名

类型

说明

data

object

msg

string

接口描述

code

string

0为成功 |

上传图片

请求Body参数

参数名

示例值

必选

类型

说明

file

file

选择的文件,formData上传

成功返回示例
代码语言:javascript
复制
[
    {
        "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=停用

成功返回示例
代码语言:javascript
复制
{
  "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。 数据库管理系统是专门用来管理数据库中数据的,数据库管理系统可以 对数据库当中的数据进行增删改查。

代码语言:javascript
复制
常见的数据库管理系统:
            MySQL、Oracle、MS SqlServer、DB2、sybase等....

SQL:结构化查询语言 程序员需要学习SQL语句,程序员通过编写SQL语句,然后DBMS负责执行SQL 语句,最终来完成数据库中数据的增删改查操作。

代码语言:javascript
复制
SQL是一套标准,程序员主要学习的就是SQL语句,这个SQL在mysql中可以使用,
    同时在Oracle中也可以使用,在DB2中也可以使用。

三者之间的关系? DBMS--执行--> SQL --操作--> DB

先安装数据库管理系统MySQL,然后学习SQL语句怎么写,编写SQL语句之后,DBMS 对SQL语句进行执行,最终来完成数据库的数据管理。

2、安装MySQL数据库管理系统。

第一步:先安装,选择“经典版”

第二步:需要进行MySQL数据库实例配置。

需要注意的事项?

端口号:

代码语言:javascript
复制
端口号port是任何一个软件/应用都会有的,端口号是应用的唯一代表。
    端口号通常和IP地址在一块,IP地址用来定位计算机的,端口号port
    是用来定位计算机上某个服务的/某个应用的!
    在同一台计算机上,端口号不能重复。具有唯一性。

    mysql数据库启动的时候,这个服务占有的默认端口号是3306
    这是大家都知道的事儿。记住。

字符编码方式?

代码语言:javascript
复制
设置mysql数据库的字符编码方式为 UTF8
    一定要注意:先选中第3个单选按钮,然后再选择utf8字符集。

服务名称?

代码语言:javascript
复制
默认是:MySQL
    不用改。

选择配置环境变量path:

代码语言:javascript
复制
如果没有选择怎么办?你可以手动配置
    path=其它路径;C:\Program Files (x86)\MySQL\MySQL Server 5.5\bin

mysql超级管理员用户名不能改,一定是:root 你需要设置mysql数据库超级管理员的密码。 我们设置为123456

3、MySQL数据库的完美卸载!

代码语言:javascript
复制
第一步:双击安装包进行卸载删除。
第二步:删除目录:
	把C:\ProgramData下面的MySQL目录干掉。
	把C:\Program Files (x86)下面的MySQL目录干掉。

4、看一下计算机上的服务,找一找MySQL的服务在哪里?

代码语言:javascript
复制
计算机-->右键-->管理-->服务和应用程序-->服务-->找mysql服务

MySQL的服务,默认是“启动”的状态,只有启动了mysql才能用。

默认情况下是“自动”启动,自动启动表示下一次重启操作系统的时候 自动启动该服务。

代码语言:javascript
复制
可以在服务上点击右键:
	启动
	重启服务
	停止服务
	...

还可以改变服务的默认配置:
	服务上点击右键,属性,然后可以选择启动方式:
		自动(延迟启动)
		自动
		手动
		禁用

mysql安装了,服务启动了,怎么使用客户端登录mysql数据库呢?

代码语言:javascript
复制
使用bin目录下的mysql.exe命令来连接mysql数据库服务器

mysql常用命令:

代码语言:javascript
复制
退出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:

代码语言:javascript
复制
数据查询语言(凡是带有select关键字的都是查询语句)
    select...

DML:

代码语言:javascript
复制
数据操作语言(凡是对表当中的数据进行增删改的都是DML)
    insert delete update
    insert 增
    delete 删
    update 改

    这个主要是操作表中的数据data。

DDL:

代码语言:javascript
复制
数据定义语言
    凡是带有create、drop、alter的都是DDL。
    DDL主要操作的是表的结构。不是表中的数据。
    create:新建,等同于增
    drop:删除
    alter:修改
    这个增删改和DML不同,这个主要是对表结构进行操作。

TCL:

代码语言:javascript
复制
是事务控制语言
    包括:
            事务提交:commit;
            事务回滚:rollback;

DCL:

代码语言:javascript
复制
是数据控制语言。
    例如:授权grant、撤销权限revoke....

单表的查询

代码语言:javascript
复制
select 
	...
from
	...
where
	...
group by
	...
having
	...
order by
	...

以上关键字只能按照这个顺序来,不能颠倒。

执行顺序?

代码语言:javascript
复制
1. from
2. where
3. group by
4. having
5. select
6. order by

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Condition
  • 1、什么是数据库?什么是数据库管理系统?什么是SQL?他们之间的关系是什么?
  • 2、安装MySQL数据库管理系统。
  • 3、MySQL数据库的完美卸载!
  • 4、看一下计算机上的服务,找一找MySQL的服务在哪里?
  • mysql常用命令:
  • 关于SQL语句的分类?
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档