Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理

article/2025/9/25 19:22:08

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测试:

在这里插入图片描述


http://chatgpt.dhexx.cn/article/UTG86vqq.shtml

相关文章

<artifactId>mysql-connector-java</artifactId>

// 加载MySQL驱动程序 Class.forName("com.mysql.cj.jdbc.Driver");// 建立连接 String url "jdbc:mysql://localhost/database_name"; String username "username"; String password "password"; Connection conn DriverManager.…

Maven中的GroupID和ArtifactID指的是什么?

最近用Maven创建工程&#xff0c;一直搞不懂Maven中的GroupID和ArtifactID是什么&#xff0c;直到看了网上的一篇文章才明白&#xff0c;在此与大家分享分享 本文转载于一问网友的回答&#xff08;略修改&#xff09; 地址&#xff1a;https://zhidao.baidu.com/question/1639…

maven中groupId和artifactId的含义

groupid和artifactId都统称为“坐标”&#xff0c;是为了保证项目唯一性而提出的&#xff0c;如果你要把你的项目弄到maven仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。 GroupId是项目组织的唯一标识符&#xff0c;在实际开发中对应JAVA的包的结构&#x…

Maven项目中依赖的groupId和artifactId标签的含义?

groupid和artifactId都统称为“坐标”&#xff0c;是为了保证项目唯一性而提出的&#xff0c;如果你要把你的项目弄到maven仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。groupId是项目组织唯一的标识符&#xff0c;实际对应java包的结构&#xff0c;是main目…

<artifactId>spring-boot-maven-plugin</artifactId>爆红

加版本号&#xff0c;我的版本号如下 <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.3.12.RELEASE</version> 加完后就不会报错 怎么找自己对应的版本号呢&#xff1f; …

maven中的GROUPID和ARTIFACTID是什么?作用是啥?

最近在学用springboot做前后端分离的项目&#xff0c;发现maven的pom.xml文件中有很多依赖&#xff0c;其中用groupId和artifactId。 心血来潮整理下groupId和artifactId的作用&#xff1a; 什么是groupId和artifactId&#xff1f; 我们在创建一个springboot项目时&#xff0…

什么是groupid和artifactId?

什么是groupid和artifactId&#xff1f; groupid和artifactId被统称为“坐标”是为了保证项目唯一性而提出的&#xff0c;如果你要把你项目弄到maven本地仓库去&#xff0c;你想要找到你的项目就必须根据这两个id去查找。 groupId和artifactId是maven管理项目包时用作区分的字段…

ubuntu18.04 安装pip3

安装命令 sudo apt install python3-pip 使用 pip3 --version 查看是否安装成功

Windows + Anaconda下pip3的安装

最近安装一个库需要用到pip3&#xff0c;在网上看了一些教程&#xff0c;发现不少坑&#xff0c;在这里自己写了一个简洁版的方法&#xff0c;做一个记录。 1.打开Anaconda Prompt&#xff0c;进入到你需要安装pip3的那个环境下的Scripts文件夹。 2.运行如下代码 easy_instal…

centos安装pip3,解决pip3指令找不到的问题 pip3 commend not found

centos下默认安装python2&#xff0c;所以在使用pip指令时&#xff0c;默认使用的是python2版本的pip。 执行 pip -V可以查看pip对应的python版本。 要想使用python3的pip执行安装任务&#xff0c;肯定得安装了python3。 cd /usr/local/python3/bin查看pip3所在的文件路径。…

Mac升级pip3 | pip install --upgrade pip

1、终端安装包时&#xff0c;会有以下提示&#xff1a;pip install --upgrade pip You are using pip version 10.0.1, however version 20.1.1 is available.You should consider upgrading via the pip install --upgrade pip command. 2、如果使用的是python3&#xff0c;…

anaconda中安装的python环境中没有pip3的问题

在使用anaconda配置的python环境时&#xff0c;发现在python环境中并没有安装pip3的包&#xff0c;只有pip的 找到安装anaconda的文件夹 点击envs(利用anaconda安装的python虚拟环境都在这里) 发现了安装的三个虚拟环境 打开tf的虚拟环境下的Scripts文件夹&#xff0c;并没有…

linux下更新pip3

本机linux下有python(表示python2)和python3&#xff0c;其中python3对应pip3。 1. 首先下载pip # wget https://bootstrap.pypa.io/get-pip.py如果没有 wget&#xff0c;先安装 wget # yum -y install wget在python3下执行脚本 # python3 get-pip.py# 执行成功后查看版本 …

python3安装包命令_pip3安装和卸载以及常用命令

环境:centos7.6 image.png python3版本:3.6.8 pip3版本:18.1 1、pip3安装 方法一:先安装python3,python3安装好后,pip3默认安装 方法二:手动下载安装指定版本 # 下载指定版本 wget https://pypi.python.org/packages/source/p/pip/pip-18.1.tar.gz # 解压 tar -zxvf pip…

安装pip3(mac)

今天使用pip3下载包的时候一不小心将pip3搞死了&#xff0c;结果在输入pip3就是如下这个样子了&#xff1a; 对于学计算机的最不希望看到的就是command not found了&#xff01;这就代表了需要重新安装&#xff0c;由于mac自带python2&#xff0c;所以输入pip还是好使的&#x…

CentOS 7 修改pip/pip3源

前言&#xff1a;由于网络有时不稳定的原因&#xff0c;使用pip/pip3下载会非常慢。如果使用国内镜像服务就完美的解决了下载速度慢的问题&#xff0c;但是Centos7默认的是国外原&#xff0c;所以整理出两个修改pip/pip3源的方法。 目录 一、国内镜像列表二、Centos配置过程二、…

pip、pip2以及pip3的区别以及使用方法

pip简介 pip是Python包管理工具&#xff0c;该工具提供了对Python 包的查找、下载、安装、卸载的功能。 pip、pip2和pip3区别 pip和pip2相同&#xff0c;均对应Python2.x版本&#xff0c;用于对python2.x环境下包的管理。pip3对应Python3.x版本。用于对python3.x环境下包的管…

pip3将安装包放在了哪里

问题 在使用python的时候&#xff0c;我们每次安装外部模块时都会使用pip3,可是你知道这些包都安在了哪里吗&#xff1f; 分析 其实这个与你调用的pip3有关系&#xff0c;pip3存在于两个地方。 第一个地方&#xff1a;安装python编译器时自带的 如果你调用的是这里的pip3,那…

Mac 安装 pip 看这里就够了,pip、pip2、pip3 再也不懵了

Mac 安装 pip 看这里就够了&#xff0c;pip、pip2、pip3 再也不懵了 啥是 pip &#xff1f; pip is the package installer for Python. You can use it to install packages from the Python Package Index and other indexes. pip 是 Python 包的安装程序。 您可以使用它从 …

关于pip2和pip3共存问题的解决办法

前言 现在在linux系统中&#xff0c;如果你直接用apt安装pip是只能安装pip3的&#xff0c;即只能用命令apt install python3-pip 而如果你继续试图用apt install python-pip来安装pip2的话&#xff0c;会提示你找不到这个包 但是吖&#xff0c;有一些工具还就得用python2运行…