Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理
Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理
Spring Boot概述
微服务概述
微服务Microservices是一种软件架构风格,他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础,利用模块化的方式组合出复杂的大型应用程序,各个功能区块使用与语言无关Language-Independet/Language agnostic 的API集相互通信;2014年,Mation Fowle 与 James Lewis 共同提出了服务的概念,定义了微服务是以开发一组小型服务的方式来开发一个独立的应用系统的。其中每个小型服务都运行在自己的进程中,并经常从采用HTTP资源API这样轻量级的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务我们仅作最低限度的集中管理。
单体应用
单体应用:一个单块应用系统是以一个单个单元的方式来构建的。企业应用系统经常包含三个主要部分:客户端用户界面、数据库和服务端应用系统,这里的服务端应用系统就是一个单体的应用,系统中任意逻辑发生变化都会导致重新构建部署一个新版本的服务端应用系统。针对单体应用,当访问量变大时,通常采用负载均衡,横向扩展的方式将多个单体应用部署到多个服务器上访问
单体应用的缺点:软件变更受到很多的限制,应用系统的一个很小的部分得到一处变更,也需要将整个单块应用系统进行重新构建和部署。不能根据用户需求部署应用系统中的功能模块,只能扩展部署整个应用系统。
单体应用和微服务对比
下面是借鉴的图示:可以看出彼此的优劣

微服务应用搭建

要搭建一个微服务,运维和部署都变得非常复杂,spring提供了一套解决方案
spring Boot:快速构建单个服务;
spring Cloud:是一系列有序框架的集合,其主要的设施有,服务发现与注册,配置中心,消息总线,负载均衡,断路器,数据监控等,通过Spring Boot的方式,可以实现一键启动,和部署。
Spring cloud data flow:为基于微服务的分布式流出处理和批处理数据通道提供了一系列模型和最佳实践。

Spring Boot简述
Spring-Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。个人理解来说Spring-Boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,Spring-Boot整合了其他相关框架。
Spring Boot的优势
- 快速构建项目
 - 对主流开发框架无配置集成
 - 项目可独立运行,无序外部依赖Servlet容器
 - 提供运行时的应用监控
 - 极大的提高了开发、部署效率
 - 与云计算的天然集成
 - Spring Boot的核心功能介绍
 
Spring Boot的核心功能介绍
独立的运行Spring项目:Spring Boot 可以jar包形式独立运行,运行一个Spring Boot项目只需要通过java -jar xx.jar来运行
内嵌servlet容器:Spring Boot 可以选择内嵌Tomcat、jetty或者Undertow,这样我们无须以war包形式部署项目。
提供starter简化Maven配置:spring提供了一系列的start pom来简化Maven的依赖加载,列如,当你使用了spring-boot-starter-web,会自动加入依赖包。
自动装配Spring:Spring Boot会根据在类路径中的jar包,类、为jar包里面的类自动配置Bean,这样会极大地减少我们要使用的配置。当然,Spring Boot只考虑大多数的开发场景,并不是所有的场景,若在实际开发中我们需要配置Bean,而Spring Boot也有提供支持,则可以自定义自动配置。
准生产的应用监控:Spring Boot提供基于http ssh telnet 对运行时的项目进行监控
无代码生产和xml配置
Spring Boot 不是借助与代码生成来实现的,而是通过条件注解来实现的,这是Spring4.x提供的新特性。
Spring Boot入门
注意新建Model时选择Spring Initializr方式新建,注意name,language,type,group,package name

点击下一步:注意:需要注意Web中的SpringWeb的勾选,以及SpringBoot选择真确,否则下载maven时会出现< artifactId>spring-boot-maven-plugin</ artifactId>爆红的情况
然后点击next创建

如果爆红请在如下图加上SpringBoot那里一样的版本号

pom.xml示例:在pom.xml中添加lombok的依赖插件,该工具使用注解的方式可以减少实体类中对get,set、以及构造器等一系列的替换:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.11</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.etime</groupId><artifactId>day14</artifactId><version>0.0.1-SNAPSHOT</version><name>day14</name><description>day14</description><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.7.11</version></plugin></plugins></build></project> 
注意:创建的格式需要如图所示不然会出现测试报错:

创建模拟对象实体类User.java:使用注解的方式创建get\set\以及构造函数
package com.etime.day14.pojo;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {private int id;private String name;private String password;
} 
创建UserController.java
package com.etime.day14.controller;import com.etime.day14.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@RequestMapping("/user")
public class UserController {@RequestMapping("t01")@ResponseBodypublic User test(){return new User(1,"mary","1234");}
} 
找到主函数Day14Application.java(根据项目的名不同自动创建的主函数名也不一样)运行:
 
使用Apifox接口测试工具进行测试(该工具同Postman接口测试工具一样,只是Apifox是中文版的测试工具有需要的可以去(https://blog.csdn.net/m0_56245143/article/details/130270652?spm=1001.2014.3001.5501)这个篇博客文章下进行下载和使用):

下面我们将使用Apifox工具进行数据模拟实现增删改查:
@RestController相当于:@Controller+@ResponseBody;注册控制器,该控制器中所有方法返回数据都会自动转换为json格式(除了字符串以外)
根据用户id获取用户对象:
UserController.java
package com.etime.day14.controller;import com.etime.day14.pojo.User;
import org.springframework.web.bind.annotation.*;@RestController
public class UserController {//根据id查询用户信息@GetMapping("/user/{uid}")public User getUserByUid(@PathVariable("uid") int uid){return new User(uid,"mary","1234");}
} 
Apifox模拟测试:

查询所有用户信息:
    //查询所有用户信息@GetMapping("/user")public List<User> getAllUser(){User user1 = new User(1,"mary","1234");User user2 = new User(2,"tom","123");User user3 = new User(3,"lucy","112");List<User> list = new ArrayList<>();list.add(user1);list.add(user2);list.add(user3);return list;}
 
Apifox测试:

新增用户:
//新增用户@PostMapping("/user")public boolean addUser(User user){System.out.println(user);return true;}
 
Apifox测试:

更新用户信息:
    //更新用户信息@PutMapping("/user")public boolean updateUser(User user){System.out.println("修改用户信息:"+user);return false;}
 
Apifox测试:

根据用户编号删除用户信息:
//根据用户id删除用户信息@DeleteMapping("/user/{uid}")public boolean deleteUser(@PathVariable("uid") int uid){System.out.println("删除"+uid);return true;}
 
Apifox测试:

相关文章:
Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理
Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理 Spring Boot概述 微服务概述 微服务Microservices是一种软件架构风格,他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础,…...
项目管理中的必不可少的强大工具有哪些?
在项目管理中,我们总是想寻求一套功能强大的工具,来满足我们多样化的需求。但往往事与愿违,这样强大的工具总是费用高,操作复杂,需安装多个插件。下面,我就给大家推荐一款项目管理软件 ~Zoho Projects&…...
嵌入式学习笔记——SPI通信的应用
SPI通信的应用 前言屏幕分类1.3OLED概述驱动芯片框图原理图通信时序显示的方式页地址、列地址初始化指令 程序设计初始化代码初始化写数据与写命令清屏函数 初始化代码字符显示函数 总结 前言 上一篇中介绍了STM32的SPI通信,并根据框图和寄存器进行了SPI通信的初始…...
.Net下企业应用系统架构构建心得
在开始架构设计之前,需要了解一下架构是什么,按照IEEE标准的定义是: Architecture 是一个系统的基本组织,它蕴含于系统的组件中、组件之间的相互关系中、组件与环境的相互关系中、以及呈现于其设计和演进的原则中。 (The embodied…...
【社区图书馆】关于Mybatis原理学习的读后感
1、为什么会看原理书籍 Mybatis是我们Java后端开发中的主流ORM框架,基本都会在工作中用到。所以,是既熟悉,又陌生。熟悉是因为一直都在使用,而陌生则是对于其内部原理还不够深入。刚好近期的工作中,又遇到了一个需求&a…...
C++ Primer阅读笔记--表达式和运算符的使用
1--左值和右值 C 的表达式有右值(rvalue, are-value)和左值(lvalue, ell-value)两个形式;当一个对象被用作右值时,使用的是对象的值(内容);当对象被用作左值时࿰…...
npm install xxx的执行过程及示例
当你在终端中执行npm install xxx命令时,npm会执行以下步骤来安装软件包: 检查本地npm缓存中是否有该软件包。 如果本地npm缓存中已经存在该软件包,npm将直接从缓存中提取软件包并安装。这将显著加快安装速度,因为npm无需从网络下…...
excel数据分析比赛
基础 sql:百度网盘 请输入提取码 excel函数 <...
Git使用GitHub说明
GitHub为公网代码托管仓库,Git可以将本地仓库推送到GitHub管理。 步骤:1、注册GitHub账号 2、创建仓库(会得到一个仓库地址) 3、推送本地仓库 git remote add origin https://github.com/jianshengchuanqi/xuesezhanjiang.git…...
这些不可不知的JVM知识
JVM是面试中必问的部分,本文通过思维导图以面向面试的角度整理JVM中不可不知的知识。 先上图: JVM必备知识 1、JVM基本概念 1.1、JVM是什么 JVM 的全称是 「Java Virtual Machine」,也就是我们耳熟能详的 Java 虚拟机。 JVM具备着计算机的…...
基于RK3568的Linux驱动开发——GPIO知识点(一)
authordaisy.skye的博客_CSDN博客-Qt,嵌入式,Linux领域博主系列基于RK3568的Linux驱动开发—— GPIO知识点(二)_daisy.skye的博客-CSDN博客 gpio bank RK3568 有 5 组 GPIO bank:GPIO0~GPIO4,每组又以 A0-A7、B0-B7、 C0-C7、 D0…...
5.2.1二叉树的定义和基本术语
二叉树的基本概念: 二叉树是递归定义的二叉树 下面我们来看几个特殊的二叉树: 特点: 1)只有最后一层有叶子节点 2)不存在度为1的结点 3)按层序从1开始编号,结点i的左孩子为2i,右孩…...
动态组件、keep-alive的使用及自定义指令
目录 1. 动态组件 2.如何实现动态组件渲染 3. 使用keep-alive保持状态 4. keep-alive对应的生命周期函数 5. keep-alive的include属性 自定义指令 1.什么是自定义指令 2. 自定义指令的分类 3. 私有自定义指令 4. update函数 5. 函数简写 全局自定义指令: …...
基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现
基于JavaSpringMVCMybatisJquery高校毕业设计管理系统设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…...
问题排查记录-ffmpeg链接libavfilter和libavcodec:未定义的引用
目录 一、问题背景 二、问题现象 2.1 ffmpeg测试例程 2.2 编译脚本 2.3 错误提示 三、问题排查 3.1 关于提示找不到“stdio" "iostream"头文件的问题 3.1.1查看工具链头文件检索位置 3.1.2 根据工具链路径查找头文件 3.1.3 在编译脚本中指定头文件路径…...
打印流,Properties类
打印流只有输出流,没有输入流 package com.hspedu.printstream;import java.io.IOException; import java.io.PrintStream;/*** author 韩顺平* version 1.0* 演示PrintStream (字节打印流/输出流)*/ public class PrintStream_ {public stat…...
TinyOS 配置教程
系列文章目录 TinyOS 系列文章【一】:TinyOS 配置教程 TinyOS 系列文章【二】:Tossim 教程 文章目录 系列文章目录前言1. 安装1.1. 实验环境1.2. TinyOS基础工作1.3. TinyOS 的配置1.4. 安装 java1.5. 安装编译器 2. 测试仿真程序总结 前言 本文主要用…...
【工作总结】后端开发人员的坏习惯
文章目录 前言一、不遵循项目规范二、用复杂SQL语句来解决问题三、缺少全局把控思维,只关注某一块业务四、函数复杂冗长,逻辑混乱五、缺乏主动思考,拿来主义六、核心业务逻辑,缺少相关日志和注释七、修改代码,缺少必要测试八、需求没理清&…...
review
review post提交方式下的设置编码,防止中文乱码 request.setCharaterEncoding(“utf-8”); get提交方式,tomcat8开始,编码不需要设置 tomcat8之前,get方式设置比较麻烦: String fname request.getParameter("f…...
【人工智能概论】 用Python实现数据的归一化
【人工智能概论】 用Python实现数据的归一化 文章目录 【人工智能概论】 用Python实现数据的归一化一. 数据归一化处理的意义二. 常见的归一化方法2.1 最大最小标准化(Min-Max Normalization)2.2 z-score 标准化 三. 用sklearn实现归一化 一. 数据归一化…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
