SpringBoot基础、运维内容


一、入门

(1).SpringBoot简介

说明: SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程
优点:①:依赖设置繁琐 ②:配置繁琐

缺点:
①:起步依赖(简化依赖配置)
使用ssm框架的时候,经常容易发生依赖冲突,导致很多问题非常难以排除。需要手动更改以来版本。
使用springboot,它能够自动使用最合适的版本,不同的版本的springboot依赖也会自动给你配置不同版本的其他依赖(druid、mybatis、mysql…)
②:自动配置(简化常用工程相关配置)
③:辅助功能(内置服务器tomcat,…)

(2).SpringBoot核心特色

①:parent

parent是所有SpringBoot项目要继承的项目,它定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
在这里插入图片描述
在这里插入图片描述

②:starter

starter是SpringBoot中常见项目名称,它定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的。
在这里插入图片描述
start的依赖当中其实存放着一系列相关的依赖,相互之间依赖传递,最终写道pom.xml时只需要添加极少的依赖,相当简便。

③:引导类

SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目。SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean。引导类的功能主要是靠@SpringBootApplication这个注解来实现的。
在这里插入图片描述

④:内置服务器

以往使用tomcat需要安装tomcat打包放进去启动tomcat,或者在IDEA配置tomcat设置好路径,选择war包,才能运行。而在springboot中,你可以直接在依赖中配置,不想用就换。不需要以往那么繁琐
在这里插入图片描述
在这里插入图片描述


2.REST风格

(1).REST简介

有别于传统get与post在url路径中显示业务的内容,REST风格简化了书写
在这里插入图片描述
在这里插入图片描述

什么叫做约定呢? 虽然公司说post方法就是用来添加用户信息,但是如果你想用get添加用户信息也可以!上图中对应的方法业务只是一个建议!

如何选择我想使用的方法呢?
在@RequestMapping中,多添加一个属性:@RequestMapping(value = "/users", method = RequestMethod.DELETE) 以此来限定你可以使用的方法,就变成每个方法针对一个业务了!
如此一来,以往ssm项目中使用url后缀作为映射方法的核心,已经变成了使用方法来影响映射处理器方法
在这里插入图片描述
在这里插入图片描述

(2).形参区别

在这里插入图片描述


3.基础配置

(1).复制工程

①: 在工作空间中复制对应工程,并修改工程名称
②: 删除与Idea相关配置文件,仅保留src目录与pom.xm1文件
③: 修改pom.xm1文件中的artifactId与新工程/模块名相同
④: 删除name标签(可选
⑤: 保留备份工程供后期使用

(2).属性配置

在这里插入图片描述
在这里插入图片描述

SpringBoot提供了三种属性配置的方式:
yml为主流的配置格式
在这里插入图片描述
在这里插入图片描述

(3).调用yml中配置内容

在这里插入图片描述

4.整合第三方技术

(1).整合JUnit

①: 测试类如果存在于引导类所在包或子包中无需指定引导类
②: 测试类如果不存在于引导类所在的包或子包中需要通过classes属
性指定引导类
在这里插入图片描述

(2).整合MyBatis

依赖名为:
*-spring-boot-starter是第三方的,spring-boot-starter- *是官方的
在这里插入图片描述

(3).整合第三方技术

区别于SSM中数据源繁琐的配置,只需要在yml文件中输入数据源信息即可
在这里插入图片描述

(4).整合MyBatis-Plus

导入依赖、继承BaseMapper<实体类>、具体可以去看另一篇博客

1、mp是根据实体类Book按驼峰原则去数据库下找同名的表book
2、如果表名跟实体类不一致有两种解决方法
3、第一种是设置@TableName注解指定表名
4、第二种方法设置前缀,相对来说简化一点,如果表很多的话就用这个

(5).整合Druid

在这里插入图片描述

在这里插入图片描述

5.SSMP整合💢

(1).案例分析

①:实体类开发 - @Lombok
②:Dao开发 - 整合MyBatis Plus,制作数据层测试
③:Service开发 - 基于MyBatis Plus增量开发,制作业务层测试
④:Controller开发 - 基于Restful开发,使用PostMan测试接口功能
⑤:Controller开发 - 前后端开发协议制作
⑥:页面开发 - 基于VUE + ElementUI制作,前后端联调,页面数据处理,页面消息处理 CRUD
⑦:项目异常处理
⑧:按条件查询 - 页面功能调整、Controller修正功能、Service修正功能

6.运维篇

(1).Springboot项目快速启动(Windows版)

window在jar包文件下使用命令行指令直接启动jar包就ok
在这里插入图片描述
在这里插入图片描述

项目启动的时候端口会被占用,为了避免出现端口占用还找不到是哪个程序的时候
在这里插入图片描述

(2).Springboot项目快速启动(Linux版)

通常我们会在 ~ home目录 或者 usr/local/ 在该目录下新建一个 app来上传自己的jar包
在这里插入图片描述
在这里插入图片描述
**确保自己安装了linux的 JDK**
在这里插入图片描述
此时访问192.168.5.128会发现项目并没有读取到数据,原因是因为你在idea当中配置的数据源使用的是localhost,需要改成linux的ip地址

那我们该怎么做呢?去修改linux当中包里的数据源配置吗?不对,我们可以使用navicat将项目所需要的表发送到linux中。
我们使用navicat连接上linux的mysql,将原来Windows中使用的表转储

在这里插入图片描述

将转出出来的数据,复制起来,到与linux连接的数据库的表当中,创建一个查询,然后把语句复制进去
在这里插入图片描述
全选运行,这样我们就等于把原来的表转移到linux当中了,此时linux就可以自动辨别出该表。部署的项目也可以正常运行了

在这里插入图片描述
在这里插入图片描述

(3).linux部署进阶

项目部署也确实能用了,但是实际开发是不会这么部署的。因为此时finalshell界面无法操作我们的项目就只能这样被锁住了,你无法进行操作。 因此我们可以开启后台模式
在这里插入图片描述
我们该如何关闭项目呢?
由于后台模式不属于一个界面中运行的程序,所以我们需要通过查找程序pid来杀程序
在这里插入图片描述

(4).项目临时配置

比如当你的端口被某个程序占用时,项目会被修改临时属性,部署上去
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们也可以删除掉默认的第二个参数 args,这样操作可以提高项目安全性,不会传入外部参数

临时配置文件会覆盖其他的配置文件。配置文件之间也会自动填补对方没有的,一起使用
💢配置优先级:
①: jar包同级目录中创建config文件,在该config文件中再创建application.yml临时文件
②: jar包同级目录中创建application.yml临时文件
③: 项目中resource目录中创建config文件,在该config文件中再创建application.yml临时文件
④: 项目中resource目录中创建application.yml临时文件
顺带提一下三种配置文件的优先级: properties-yaml-yml
在这里插入图片描述

(5).多环境开发

快捷笔记
针对不同的环境,我们可以使用 — 来分割 跟md的分割线一样,最终在应用环境当中选择自己要使用的配置
可以看到profiles已经是过时的方法了,
在这里插入图片描述
在这里插入图片描述
不过实际上前面讲的配置方式都没什么用、工作中配置基本都是下面这种
在这里插入图片描述
下方写法前提是goup当中的文件必须是存在的,命名格式为: application-devxxx.yml如此
在这里插入图片描述

(6).通用配置容易出现的问题

当 maven 与 springboot 同时对多环境进行控制的时候,以maven为主
在这里插入图片描述

在这里插入图片描述

(7).日志

在这里插入图片描述
推荐采用组设置的日志级别,当包多的时候太繁琐。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(1).微服务

① 说明: 它是一种架构模式,它将传统的一站式应用(框架开发的传统 Web 应用)拆分成多个独立的服务,每个服务都负责单独的业务功能。这些服务可以独立部署和扩展,并且通过轻量级的通信机制互相协作。
② 举个栗子: 网购在微服务架构中,通过网站或者移动端浏览商品下单。这些操作都可能涉及微服务,
用户服务(用于用户注册、登录)商品服务(用于展示商品信息)订单服务(用于下单)
这些微服务都是独立运行的,并且可以通过轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API)
在这里插入图片描述

(2).分布式

① 说明: 分布式系统是一组独立的计算机,它们通过网络连接并协同工作,对用户来说就像是一个统一的系统。分布式系统的核心概念包括分布性、自治性、并行性和全局性。

② 简单说: 分布式系统就像是一个团队,每个成员都有自己的任务,但是他们通过沟通和协作来完成一个共同的目标。每个成员都有自己的能力和职责(自治性),并且可以同时工作(并行性)。这些成员可能分布在不同的地方(分布性),但是他们通过网络连接并协同工作,对用户来说就像是一个整体(全局性)。

③ 举个栗子: 比如你在使用网上银行进行转账操作。这个操作可能需要多个服务器协同工作,比如一个服务器负责验证你的身份信息,另一个服务器负责处理转账操作,还有一个服务器负责记录交易信息。这些服务器可能分布在不同的地理位置,但它们通过网络连接并协同工作,对你来说就像是在与一个统一的系统进行交互。

④ 分布式系统的缺点:
在这里插入图片描述

(3).云原生

①说明: 云原生是一种构建和运行应用程序的方法,它利用了云计算的优势,如弹性、可扩展性和自动化。云原生的核心概念包括容器化、微服务、DevOps和持续交付。
②举个栗子: 把云原生比作一个餐厅。在这个餐厅里,每道菜都是由一个专门的厨师(微服务)负责制作。这些厨师使用标准化的食材(容器化),并且可以根据客人的需求快速调整菜品(弹性)。餐厅的管理人员使用先进的管理方法(DevOps),确保餐厅的运营高效顺畅。餐厅还不断推出新菜品(持续交付),以满足客人不断变化的需求。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值