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) }上面这段函数: 首先这个函…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...