当前位置: 首页 > news >正文

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是一种软件架构风格&#xff0c;他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础&#xff0c;…...

项目管理中的必不可少的强大工具有哪些?

在项目管理中&#xff0c;我们总是想寻求一套功能强大的工具&#xff0c;来满足我们多样化的需求。但往往事与愿违&#xff0c;这样强大的工具总是费用高&#xff0c;操作复杂&#xff0c;需安装多个插件。下面&#xff0c;我就给大家推荐一款项目管理软件 ~Zoho Projects&…...

嵌入式学习笔记——SPI通信的应用

SPI通信的应用 前言屏幕分类1.3OLED概述驱动芯片框图原理图通信时序显示的方式页地址、列地址初始化指令 程序设计初始化代码初始化写数据与写命令清屏函数 初始化代码字符显示函数 总结 前言 上一篇中介绍了STM32的SPI通信&#xff0c;并根据框图和寄存器进行了SPI通信的初始…...

.Net下企业应用系统架构构建心得

在开始架构设计之前&#xff0c;需要了解一下架构是什么&#xff0c;按照IEEE标准的定义是&#xff1a; Architecture 是一个系统的基本组织&#xff0c;它蕴含于系统的组件中、组件之间的相互关系中、组件与环境的相互关系中、以及呈现于其设计和演进的原则中。 (The embodied…...

【社区图书馆】关于Mybatis原理学习的读后感

1、为什么会看原理书籍 Mybatis是我们Java后端开发中的主流ORM框架&#xff0c;基本都会在工作中用到。所以&#xff0c;是既熟悉&#xff0c;又陌生。熟悉是因为一直都在使用&#xff0c;而陌生则是对于其内部原理还不够深入。刚好近期的工作中&#xff0c;又遇到了一个需求&a…...

C++ Primer阅读笔记--表达式和运算符的使用

1--左值和右值 C 的表达式有右值&#xff08;rvalue, are-value&#xff09;和左值&#xff08;lvalue, ell-value&#xff09;两个形式&#xff1b;当一个对象被用作右值时&#xff0c;使用的是对象的值&#xff08;内容&#xff09;&#xff1b;当对象被用作左值时&#xff0…...

npm install xxx的执行过程及示例

当你在终端中执行npm install xxx命令时&#xff0c;npm会执行以下步骤来安装软件包&#xff1a; 检查本地npm缓存中是否有该软件包。 如果本地npm缓存中已经存在该软件包&#xff0c;npm将直接从缓存中提取软件包并安装。这将显著加快安装速度&#xff0c;因为npm无需从网络下…...

excel数据分析比赛

基础 sql:百度网盘 请输入提取码 excel函数 <...

Git使用GitHub说明

GitHub为公网代码托管仓库&#xff0c;Git可以将本地仓库推送到GitHub管理。 步骤&#xff1a;1、注册GitHub账号 2、创建仓库&#xff08;会得到一个仓库地址&#xff09; 3、推送本地仓库 git remote add origin https://github.com/jianshengchuanqi/xuesezhanjiang.git…...

这些不可不知的JVM知识

JVM是面试中必问的部分&#xff0c;本文通过思维导图以面向面试的角度整理JVM中不可不知的知识。 先上图&#xff1a; JVM必备知识 1、JVM基本概念 1.1、JVM是什么 JVM 的全称是 「Java Virtual Machine」&#xff0c;也就是我们耳熟能详的 Java 虚拟机。 JVM具备着计算机的…...

基于RK3568的Linux驱动开发——GPIO知识点(一)

authordaisy.skye的博客_CSDN博客-Qt,嵌入式,Linux领域博主系列基于RK3568的Linux驱动开发—— GPIO知识点&#xff08;二&#xff09;_daisy.skye的博客-CSDN博客 gpio bank RK3568 有 5 组 GPIO bank&#xff1a;GPIO0~GPIO4&#xff0c;每组又以 A0-A7、B0-B7、 C0-C7、 D0…...

5.2.1二叉树的定义和基本术语

二叉树的基本概念&#xff1a; 二叉树是递归定义的二叉树 下面我们来看几个特殊的二叉树&#xff1a; 特点&#xff1a; 1&#xff09;只有最后一层有叶子节点 2&#xff09;不存在度为1的结点 3&#xff09;按层序从1开始编号&#xff0c;结点i的左孩子为2i&#xff0c;右孩…...

动态组件、keep-alive的使用及自定义指令

目录 1. 动态组件 2.如何实现动态组件渲染 3. 使用keep-alive保持状态 4. keep-alive对应的生命周期函数 5. keep-alive的include属性 自定义指令 1.什么是自定义指令 2. 自定义指令的分类 3. 私有自定义指令 4. update函数 5. 函数简写 全局自定义指令&#xff1a; …...

基于JavaSpringMVC+Mybatis+Jquery高校毕业设计管理系统设计和实现

基于JavaSpringMVCMybatisJquery高校毕业设计管理系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注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类

打印流只有输出流&#xff0c;没有输入流 package com.hspedu.printstream;import java.io.IOException; import java.io.PrintStream;/*** author 韩顺平* version 1.0* 演示PrintStream &#xff08;字节打印流/输出流&#xff09;*/ public class PrintStream_ {public stat…...

TinyOS 配置教程

系列文章目录 TinyOS 系列文章【一】&#xff1a;TinyOS 配置教程 TinyOS 系列文章【二】&#xff1a;Tossim 教程 文章目录 系列文章目录前言1. 安装1.1. 实验环境1.2. TinyOS基础工作1.3. TinyOS 的配置1.4. 安装 java1.5. 安装编译器 2. 测试仿真程序总结 前言 本文主要用…...

【工作总结】后端开发人员的坏习惯

文章目录 前言一、不遵循项目规范二、用复杂SQL语句来解决问题三、缺少全局把控思维&#xff0c;只关注某一块业务四、函数复杂冗长,逻辑混乱五、缺乏主动思考&#xff0c;拿来主义六、核心业务逻辑,缺少相关日志和注释七、修改代码&#xff0c;缺少必要测试八、需求没理清&…...

review

review post提交方式下的设置编码&#xff0c;防止中文乱码 request.setCharaterEncoding(“utf-8”); get提交方式&#xff0c;tomcat8开始&#xff0c;编码不需要设置 tomcat8之前&#xff0c;get方式设置比较麻烦&#xff1a; String fname request.getParameter("f…...

【人工智能概论】 用Python实现数据的归一化

【人工智能概论】 用Python实现数据的归一化 文章目录 【人工智能概论】 用Python实现数据的归一化一. 数据归一化处理的意义二. 常见的归一化方法2.1 最大最小标准化&#xff08;Min-Max Normalization&#xff09;2.2 z-score 标准化 三. 用sklearn实现归一化 一. 数据归一化…...

Claude Desktop for Linux SSH助手集成:远程开发环境配置

Claude Desktop for Linux SSH助手集成&#xff1a;远程开发环境配置 【免费下载链接】claude-desktop-debian Claude Desktop for Linux 项目地址: https://gitcode.com/GitHub_Trending/cl/claude-desktop-debian Claude Desktop for Linux是一款专为Linux系统打造的A…...

蛋白质基础模型:从AlphaFold2到Chai-1的范式跃迁

1. 项目概述&#xff1a;一场悄然发生的蛋白质结构预测范式迁移最近在实验室跑完第7轮Chai-1的微调任务后&#xff0c;我盯着屏幕上跳出来的pLDDT值曲线&#xff0c;突然意识到&#xff1a;我们正在经历的不是一次工具升级&#xff0c;而是一场底层建模逻辑的彻底重写。标题里提…...

微信小程序 社区老年人健康管理系统

目录同行可拿货,招校园代理 ,本人源头供货商项目背景核心功能技术实现服务模式社会效益项目技术支持源码获取详细视频演示 &#xff1a;同行可合作点击我获取源码->获取博主联系方式->进我个人主页-->同行可拿货,招校园代理 ,本人源头供货商 项目背景 随着老龄化社会…...

终极Unity游戏视觉优化:5分钟快速实现去马赛克完整方案

终极Unity游戏视觉优化&#xff1a;5分钟快速实现去马赛克完整方案 【免费下载链接】UniversalUnityDemosaics A collection of universal demosaic BepInEx plugins for games made in Unity3D engine 项目地址: https://gitcode.com/gh_mirrors/un/UniversalUnityDemosaics…...

ChatGPT 2026智能体生态爆发(官方白皮书未公开的7个生产级约束条件)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;ChatGPT 2026智能体生态爆发的范式跃迁 2026年&#xff0c;ChatGPT已不再仅是一个对话模型&#xff0c;而是演进为可自主编排、跨平台协同、具备实时环境感知与决策闭环能力的智能体&#xff08;Agent&#xf…...

有哪些一键生成论文工具是真的贴合学术规范,而不是模板套话?

在 AI 写作技术迅猛发展的当下&#xff0c;各类论文工具层出不穷&#xff0c;看似能快速完成写作任务&#xff0c;实则多数只是表面功夫、内容空洞的 "文字搬运工"&#xff0c;生成的论文存在逻辑断层、术语错误、格式混乱等明显缺陷&#xff0c;读起来毫无专业感&am…...

3分钟掌握PCB交互式BOM:告别传统表格的终极可视化方案

3分钟掌握PCB交互式BOM&#xff1a;告别传统表格的终极可视化方案 【免费下载链接】InteractiveHtmlBom Interactive HTML BOM generation plugin for KiCad, EasyEDA, Eagle, Fusion360 and Allegro PCB designer 项目地址: https://gitcode.com/gh_mirrors/in/InteractiveH…...

丙午年三月三十平镜里

丙午年三月三十平镜里 曾几风流里&#xff0c;皆逝日常中。 莫名春伤寒&#xff0c;妙在岁月功。 儿时不知道&#xff0c;青烟多捉空。 老壮老路上&#xff0c;庭院情境通。 谓花当此季&#xff0c;寻因那刻虹&#xff1f; 虚妄浮云聚&#xff0c;耕种顺序隆。 斯文源村落&…...

2026年想在成都装中央空调?哪家安装质保好这里有答案!

家人们&#xff0c;2026年了&#xff0c;在成都想要装中央空调的小伙伴看过来&#xff01;我作为一个在中央空调领域摸爬滚打多年的真实体验者&#xff0c;深知大家在选择空调时的纠结和痛点。就拿成都的气候来说&#xff0c;夏天闷热&#xff0c;空调得使劲儿制冷&#xff1b;…...

DeepStream9.0 service-maker

service-maker在前几个版本就推出了&#xff0c;DeepStream9.0做了增强&#xff1a; Added Pyservice maker support for Smart-Recording&#xff08;就是实时录制码流&#xff09; 如果你用过 NVIDIA DeepStream&#xff0c;应该很熟悉它的典型开发方式&#xff1a;围绕 G…...