Spring Boot实践一
一、Spring Boot简介
Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它提供了一种快速、方便的方式来创建基于Spring的应用程序,而无需繁琐的配置。Spring Boot通过自动配置和约定大于配置的方式,使得开发者可以更加专注于业务逻辑的实现,而不是配置文件的编写。
Spring Boot提供了许多功能,包括:
- 自动配置:Spring Boot会根据应用程序的依赖关系自动配置应用程序。
- 嵌入式Web服务器:Spring Boot内置了Tomcat、Jetty和Undertow等Web服务器,可以轻松地创建Web应用程序。
- 简化的依赖管理:Spring Boot可以自动管理应用程序的依赖关系,避免了版本冲突和依赖管理的烦恼。
- 简化的配置:Spring Boot提供了一种简单的方式来配置应用程序,可以通过属性文件、YAML文件或命令行参数来配置应用程序。
- 健康检查:Spring Boot提供了健康检查功能,可以检查应用程序的状态,包括数据库连接、磁盘空间等。
总之,Spring Boot是一个非常强大的微服务框架,可以帮助开发者快速构建高质量的应用程序。
二、使用Spring Initializr创建 Spring Boot 项目
使用Spring Initializr可以快速创建一个Spring Boot项目,省去了手动配置的繁琐过程,让开发更加高效。共有两种创建方式。
方式1:使用Spring Initializr页面创建
地址:https://start.spring.io/

通过上面配置便完成了基础项目的创建。左侧选择 “Maven” 作为构建工具;右侧在 “Dependencies” 中选择需要的依赖项,例如 “Spring Web”、 “Spring Data JPA”、 “Spring Security” 等等。
最终生成的Spring Boot的基础结构共三个文件:

- src/main/java下的程序入口:DemoSpringBootApplication
- src/main/resources下的配置文件:application.properties
- src/test/下的测试入口:DemoSpringBootApplicationTests
在Spring Boot工程中,还有一个pom.xml文件,是Maven项目的核心配置文件,用于管理项目的依赖和构建配置。打开pom.xml,可以看到Spring Boot项目的依赖。当pom.xml文件中的依赖或配置出现问题时,会显示为红色字体,表示存在错误或警告,需要先解决。常见的红色字体包括:
- 缺少依赖:如果项目中使用的某个依赖没有在pom.xml文件中声明或版本号不正确,编辑器会提示缺少依赖的错误信息。
- 依赖冲突:如果项目中使用的多个依赖包含相同的类或方法,会导致依赖冲突。编辑器会提示冲突的错误信息。
- 语法错误:如果pom.xml文件中存在语法错误,例如标签未闭合或属性值不正确,编辑器会提示语法错误的信息。
- 版本不兼容:如果项目中使用的依赖版本与Spring Boot版本不兼容,会导致编译或运行时出现错误。编辑器会提示版本不兼容的警告信息
正常如下所示,主要有四个部分:
- 项目元数据:创建时候输入的Project Metadata部分,也就是Maven项目的基本元素,包括:
<groupId>、<artifactId>、<version>、<name>、<description>等 <parent>:继承spring-boot-starter-parent的依赖管理,控制版本与打包等内容<dependencies>:项目具体依赖,这里包含了spring-boot-starter-web用于实现HTTP接口(该依赖中包含了Spring MVC);spring-boot-starter-test用于编写单元测试的依赖包。更多功能模块的使用我们将在后面的教程中逐步展开。<build>:构建配置部分。默认使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把Spring Boot应用打包成JAR来直接运行。
<?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>3.1.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>DemoSpringBoot</artifactId><version>0.0.1-SNAPSHOT</version><name>DemoSpringBoot</name><description>DemoSpringBoot</description><properties><java.version>20</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></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>
方式2:使用IntelliJ IDEA中的Spring Initializr创建
打开 IntelliJ IDEA,选择 “Create New Project”,在弹出的向导中选择 “Spring Initializr”,选择 “Maven” 或 “Gradle” 作为构建工具

选择 Spring Boot 版本,并在 “Dependencies” 中选择需要的依赖项,例如 “Spring Web”、 “Spring Data JPA”、 “Spring Security” 等等。最后,点击 “Create” 完成创建项目。

当在IntelliJ中点击“Run”时,可以看到如下回显,运行成功:

问题记录
当在IntelliJ中点击“Run”时,可能会碰到一些问题:
1,如果弹出“Edit Configuration”窗口
意味着需要配置运行环境,点击“Edit Configuration”窗口中的“+”按钮,选择Application,并配置程序参数、环境变量等。
首先要查看JDK是否正常添加:选择File -> Project Structure,选择SDKs选项卡,点击“+”按钮添加JDK

如果还不行,也有可能是如下问题2相同的原因导致:
2,提示错误:找不到或无法加载主类
可能是由于导入多模块项目,IDEA未能识别出主类,无法启动Springboot项目。通过Import Module解决:
(1)File -> Project Structure -> Modules -> Import Module,然后选定模块所在的目录

(2)import module时,选择maven类型

(3)添加完成后,左侧目录显示发生变化:

3,提示java:程序包org.springframework.boot不存在
可以在IDEA需要在Setting里将 Delegate IDE build/run actions to Maven勾选上。这个选项是将IDE构建/运行操作委托给Maven。spring boot工程建议开启这个,减少未知编译问题。

三、HTTP接口实现
创建一个名为HelloController的Java类,目录结构及实现如下:

package com.example.demospringboot.web;import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;@RestController
public class HelloController {@RequestMapping("/hello")public String index() {return "Hello World !";}}
这个类使用了Spring MVC注解@RestController和@RequestMapping,它将处理来自根路径的HTTP GET请求,并返回一个字符串“Hello World !”。
启动主程序,访问http://localhost:8080/hello,可以看到页面返回:Hello World !
说明:
当你使用Spring Boot运行应用程序并访问http://localhost:8080时,页面实际上是由应用程序动态生成的,而不是从本地文件系统中读取的。
Spring Boot应用程序通常包含一个或多个控制器类,这些类使用Spring MVC框架来处理HTTP请求并生成响应。控制器类中的方法通常使用模板引擎(如Thymeleaf、Freemarker或JSP)来生成HTML页面,这些页面可以包含动态内容,如从数据库中检索的数据或从外部API获取的数据。
Spring MVC是一种基于Java的Web框架,它是Spring Framework的一部分。它提供了一种模型-视图-控制器(MVC)架构,用于构建Web应用程序。Spring MVC的核心是DispatcherServlet,它充当前端控制器,负责接收HTTP请求并将其分派给适当的处理程序。Spring MVC还提供了许多其他功能,例如数据绑定、表单处理、验证、国际化和文件上传等。它还支持多种视图技术,例如JSP、Thymeleaf、Freemarker和Velocity等。Spring MVC是一个非常流行的Web框架,被广泛用于构建企业级Web应用程序。
参考:
https://blog.didispace.com/spring-boot-learning-21-1-1/
https://blog.csdn.net/qq943686211/article/details/119973931
https://blog.csdn.net/weixin_45977659/article/details/126664571
相关文章:
Spring Boot实践一
一、Spring Boot简介 Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它提供了一种快速、方便的方式来创建基于Spring的应用程序,而无需繁琐的配置。Spring Boot通过自动配置和约定大于配置的方式,使得开发者可以更加专注于业务逻辑的实现&…...
简单认识NoSQL的Redis配置与优化
文章目录 一、关系型数据库与非关系型数据库1、关系型数据库:2、非关系型数据库3、关系型数据库和非关系型数据库区别:4、非关系型数据库应用场景 二.Redis1、简介2、优点:3、Redis为什么这么快? 三、Redis 安装部署1、安装配置2、…...
开发一个RISC-V上的操作系统(二)—— 系统引导程序(Bootloader)
目录 文章传送门 一、什么是Bootloader 二、简单的启动程序 三、上板测试 文章传送门 开发一个RISC-V上的操作系统(一)—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统(二)—— 系统引导…...
Git安装与学习
Git学习网站 Git安装教程 镜像网站 https://registry.npmmirror.com/binary.html 镜像下载是网站对服务器的一个保护措施之一,就是A站点下载的数据同 B站点下载的数据完全一样,b站点就是A站点的一面镜子。 所以镜像下载下来和原站点一摸一样。...
【Docker】docker中容器之间通信方式
文章目录 1. Docker容器之间通信的主要方式1.1 通过容器ip访问1.2. 通过宿主机的ip:port访问1.3. 通过link建立连接(官方不推荐使用)1.4. 通过 User-defined networks(推荐) 2. 参考资料 1. Docker容器之间通信的主要方式 1.1 通…...
算法-归并排序-JAVA
下面是Java实现归并排序的示例代码: public class MergeSort {public void mergeSort(int[] arr) {if (arr null || arr.length < 1) {return;}int[] temp new int[arr.length];mergeSort(arr, temp, 0, arr.length - 1);}private void mergeSort(int[] arr, …...
Flask 进阶
Flask 如何访问项目以外的文件 在工作中, 要在项目里展示一些额外的文件, 包括但不限于静态的html。图片, log, 其他的都还好说, 但是当html的时候我就开始犯难了, 因为数量过多 我并不想把它塞进我项目的t…...
home-assistant整合sso
其他软件都可以通过nginx直接做代理添加鉴权,但是这个hass果然是用户安全隐私很强,做代理需要配置白名单,而且支持的三方鉴权都不太适合我的需求,非要改源码才行,后来我发现不用改源码的折中方式 参考文章 External …...
Ip-Limit: 轻量级注解式IP限流组件(二)
author: van , ggfanwentaogmail.comIp-Limit-Example: 轻量级注解式IP限流组件使用样例 项目简介 该项目为ip-limiter的使用示例项目。 ip-limiter地址: https://github.com/DDAaTao/ip-limiter 示例项目文件树 └─example├─handler│ └─BaseException…...
【C++】开源:Redis数据库配置与使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Redis数据库配置与使用。 无专精则不能成,无涉猎则不能通。。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…...
TCP/IP网络编程 第二十四章:制作HTTP服务器端
实现简单的Web服务器端 现在开始在HTTP协议的基础上编写Web服务器端。先给出Windows平台下的示例,再给出Linux下的示例。在这里我假设各位都有了有关HTTP的知识,如果不知道HTTP协议的具体内容可以参考的往期博客,有了这些基础就不难分析源代…...
React 前端应用中快速实践 OpenTelemetry 云原生可观测性(SigNoz/K8S)
OpenTelemetry 可用于跟踪 React 应用程序的性能问题和错误。您可以跟踪从前端 web 应用程序到下游服务的用户请求。OpenTelemetry 是云原生计算基金会(CNCF)下的一个开源项目,旨在标准化遥测数据的生成和收集。已成为下一代可观测平台的事实标准。 React(也称为 Re…...
Linux 多线程并发Socket服务端的实现( 11 ) -【Linux通信架构系列 】
系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦!!! 现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everythi…...
2.7. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 Java 的泛型是伪泛型&am…...
单例模式与构造器模式
单例模式 1、是什么 单例模式(Singleton Pattern):创建型模式,提供了一种创建对象的最佳方式,这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建 在应用程序运…...
SQL力扣练习(七)
1.行程和用户(262) 表:Trips ----------------------- | Column Name | Type | ----------------------- | id | int | | client_id | int | | driver_id | int | | city_id | int | | status | enum | | reques…...
C语言假期作业 DAY 05
题目 一、选择题 1、如下程序的功能是( ) #include <stdio.h> int main() { char ch[80] "123abcdEFG*&"; int j; puts(ch); for(j 0; ch[j] ! \0; j) if(ch[j] > A && ch[j] < Z) ch[j] ch[j] e - E; puts(ch)…...
php-golang-rpc使用roadrunner-server/goridge/v3/pkg/rpc和php的spiral/goridge3.2实践
golang代码: go get github.com/roadrunner-server/goridge/v3 package main import ( "fmt" "net" "net/rpc" goridgeRpc "github.com/roadrunner-server/goridge/v3/pkg/rpc" ) type App struct{} func (s *App) Hi(na…...
API常用签名验证方法(PHP实现)
使用场景 现在越来越多的项目使用的前后端分离的模式进行开发,后端开发人员使用API接口传递数据给到前端开发进行处理展示,在一些比较重要的修改数据接口,涉及金钱,用户信息等修改的接口如果不做防护验证,经常容易被人…...
kotlin高阶函数
kotlin高阶函数 函数式API:一个函数的入参数为Lambda表达式的函数就是函数式api 例子: public inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> {return filterTo(ArrayList<T>(), predicate) }上面这段函数: 首先这个函…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)
注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...
