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

Spring Boot实践一

一、Spring Boot简介

Spring Boot是一个基于Spring框架的快速开发应用程序的工具。它提供了一种快速、方便的方式来创建基于Spring的应用程序,而无需繁琐的配置。Spring Boot通过自动配置和约定大于配置的方式,使得开发者可以更加专注于业务逻辑的实现,而不是配置文件的编写。

Spring Boot提供了许多功能,包括:

  1. 自动配置:Spring Boot会根据应用程序的依赖关系自动配置应用程序。
  2. 嵌入式Web服务器:Spring Boot内置了Tomcat、Jetty和Undertow等Web服务器,可以轻松地创建Web应用程序。
  3. 简化的依赖管理:Spring Boot可以自动管理应用程序的依赖关系,避免了版本冲突和依赖管理的烦恼。
  4. 简化的配置:Spring Boot提供了一种简单的方式来配置应用程序,可以通过属性文件、YAML文件或命令行参数来配置应用程序。
  5. 健康检查: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文件中的依赖或配置出现问题时,会显示为红色字体,表示存在错误或警告,需要先解决。常见的红色字体包括:

  1. 缺少依赖:如果项目中使用的某个依赖没有在pom.xml文件中声明或版本号不正确,编辑器会提示缺少依赖的错误信息。
  2. 依赖冲突:如果项目中使用的多个依赖包含相同的类或方法,会导致依赖冲突。编辑器会提示冲突的错误信息。
  3. 语法错误:如果pom.xml文件中存在语法错误,例如标签未闭合或属性值不正确,编辑器会提示语法错误的信息。
  4. 版本不兼容:如果项目中使用的依赖版本与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的应用程序&#xff0c;而无需繁琐的配置。Spring Boot通过自动配置和约定大于配置的方式&#xff0c;使得开发者可以更加专注于业务逻辑的实现&…...

简单认识NoSQL的Redis配置与优化

文章目录 一、关系型数据库与非关系型数据库1、关系型数据库&#xff1a;2、非关系型数据库3、关系型数据库和非关系型数据库区别&#xff1a;4、非关系型数据库应用场景 二.Redis1、简介2、优点&#xff1a;3、Redis为什么这么快&#xff1f; 三、Redis 安装部署1、安装配置2、…...

开发一个RISC-V上的操作系统(二)—— 系统引导程序(Bootloader)

目录 文章传送门 一、什么是Bootloader 二、简单的启动程序 三、上板测试 文章传送门 开发一个RISC-V上的操作系统&#xff08;一&#xff09;—— 环境搭建_riscv开发环境_Patarw_Li的博客-CSDN博客 开发一个RISC-V上的操作系统&#xff08;二&#xff09;—— 系统引导…...

Git安装与学习

Git学习网站 Git安装教程 镜像网站 https://registry.npmmirror.com/binary.html 镜像下载是网站对服务器的一个保护措施之一&#xff0c;就是A站点下载的数据同 B站点下载的数据完全一样&#xff0c;b站点就是A站点的一面镜子。 所以镜像下载下来和原站点一摸一样。...

【Docker】docker中容器之间通信方式

文章目录 1. Docker容器之间通信的主要方式1.1 通过容器ip访问1.2. 通过宿主机的ip:port访问1.3. 通过link建立连接&#xff08;官方不推荐使用&#xff09;1.4. 通过 User-defined networks&#xff08;推荐&#xff09; 2. 参考资料 1. Docker容器之间通信的主要方式 1.1 通…...

算法-归并排序-JAVA

下面是Java实现归并排序的示例代码&#xff1a; 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 如何访问项目以外的文件 在工作中&#xff0c; 要在项目里展示一些额外的文件&#xff0c; 包括但不限于静态的html。图片&#xff0c; log&#xff0c; 其他的都还好说&#xff0c; 但是当html的时候我就开始犯难了&#xff0c; 因为数量过多 我并不想把它塞进我项目的t…...

home-assistant整合sso

其他软件都可以通过nginx直接做代理添加鉴权&#xff0c;但是这个hass果然是用户安全隐私很强&#xff0c;做代理需要配置白名单&#xff0c;而且支持的三方鉴权都不太适合我的需求&#xff0c;非要改源码才行&#xff0c;后来我发现不用改源码的折中方式 参考文章 External …...

Ip-Limit: 轻量级注解式IP限流组件(二)

author: van , ggfanwentaogmail.comIp-Limit-Example: 轻量级注解式IP限流组件使用样例 项目简介 该项目为ip-limiter的使用示例项目。 ip-limiter地址&#xff1a; https://github.com/DDAaTao/ip-limiter 示例项目文件树 └─example├─handler│ └─BaseException…...

【C++】开源:Redis数据库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍Redis数据库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c…...

TCP/IP网络编程 第二十四章:制作HTTP服务器端

实现简单的Web服务器端 现在开始在HTTP协议的基础上编写Web服务器端。先给出Windows平台下的示例&#xff0c;再给出Linux下的示例。在这里我假设各位都有了有关HTTP的知识&#xff0c;如果不知道HTTP协议的具体内容可以参考的往期博客&#xff0c;有了这些基础就不难分析源代…...

React 前端应用中快速实践 OpenTelemetry 云原生可观测性(SigNoz/K8S)

OpenTelemetry 可用于跟踪 React 应用程序的性能问题和错误。您可以跟踪从前端 web 应用程序到下游服务的用户请求。OpenTelemetry 是云原生计算基金会(CNCF)下的一个开源项目&#xff0c;旨在标准化遥测数据的生成和收集。已成为下一代可观测平台的事实标准。 React(也称为 Re…...

Linux 多线程并发Socket服务端的实现( 11 ) -【Linux通信架构系列 】

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…...

2.7. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?

Java 泛型&#xff08;generics&#xff09;是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制&#xff0c;该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型&#xff0c;也就是说所操作的数据类型被指定为一个参数。 Java 的泛型是伪泛型&am…...

单例模式与构造器模式

单例模式 1、是什么 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a;创建型模式&#xff0c;提供了一种创建对象的最佳方式&#xff0c;这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建 在应用程序运…...

SQL力扣练习(七)

1.行程和用户(262) 表&#xff1a;Trips ----------------------- | Column Name | Type | ----------------------- | id | int | | client_id | int | | driver_id | int | | city_id | int | | status | enum | | reques…...

C语言假期作业 DAY 05

题目 一、选择题 1、如下程序的功能是&#xff08; &#xff09; #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代码&#xff1a; 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实现)

使用场景 现在越来越多的项目使用的前后端分离的模式进行开发&#xff0c;后端开发人员使用API接口传递数据给到前端开发进行处理展示&#xff0c;在一些比较重要的修改数据接口&#xff0c;涉及金钱&#xff0c;用户信息等修改的接口如果不做防护验证&#xff0c;经常容易被人…...

kotlin高阶函数

kotlin高阶函数 函数式API:一个函数的入参数为Lambda表达式的函数就是函数式api 例子: public inline fun <T> Iterable<T>.filter(predicate: (T) -> Boolean): List<T> {return filterTo(ArrayList<T>(), predicate) }上面这段函数: 首先这个函…...

kotlin list集合树

kotlin list集合树 记录一下 data class AreaSchemaManageDto(var id: Long? null,var pid: Long? null,var label: String? null,var children: MutableList<AreaSchemaManageDto>? null ) : Serializable { }逻辑 fun getAll(): List<AreaSchemaManageDto&g…...

基于Autoencoder自编码的64QAM星座图整形调制解调通信系统性能matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1星座图整形 4.2自编码器 4.3基于Autoencoder的星座图整形调制解调模型 4.4 实现过程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .…...

【Spring】Spring 总览

一、简单介绍一下 Spring Spring是一个全面的、企业应用开发的一站式解决方案&#xff0c;贯穿表现层、业务层、持久层&#xff0c;可以轻松和其他框架整合&#xff0c;具有轻量级、控制反转、面向切面、容器等特征。 轻量级 &#xff1a; 空间开销和时间开销都很轻量 控制反…...

微软、OpenAI用上“数据永动机” 合成数据是晨曦还是暮光?

微软、OpenAI、Cohere等公司已经开始测试使用合成数据来训练AI模型。Cohere首席执行官Aiden Gomez表示&#xff0c;合成数据可以适用于很多训练场景&#xff0c;只是目前尚未全面推广。 已有的&#xff08;通用&#xff09;数据资源似乎接近效能极限&#xff0c;开发人员认为&a…...

简单认识Redis 数据库的高可用

文章目录 一、Redis 高可用&#xff1a;1.简介&#xff1a;2、在Redis中实现高可用的技术 二、Redis持久化&#xff1a;1.持久化的功能&#xff1a;2.Redis 提供两种方式进行持久化&#xff1a; 三、RDB 持久化&#xff1a;1.简介&#xff1a;2.触发条件&#xff1a;4.启动时加…...

超级实用!,掌握这9个鲜为人知的CSS属性

微信搜索 【大迁世界】, 我会第一时间和你分享前端行业趋势&#xff0c;学习途径等等。 本文 GitHub https://github.com/qq449245884/xiaozhi 已收录&#xff0c;有一线大厂面试完整考点、资料以及我的系列文章。 快来免费体验ChatGpt plus版本的&#xff0c;我们出的钱 体验地…...

深圳国际新能源及智能网联汽车全产业博览会今年10月举办

7月25日&#xff0c;深圳市工业和信息化局与励展博览集团共同在深圳举办Automotive World China 2023深圳国际新能源及智能网联汽车全产业博览会&#xff08;简称“AWC 2023”&#xff09;全球推介启动大会&#xff0c;该博览会将于2023年10月11日-13日在深圳国际会展中心盛大举…...

【具有非线性反馈的LTI系统识别】针对反馈非线性的LTI系统,提供非线性辨识方案(SimulinkMatlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、Simulink仿真实现 &#x1f4a5;1 概述 本文为具有反馈非线性的LTI系统提供了一种非线性识别方案&#xff0c;这取决于输入和LTI系统输出。对于MEMS来说尤其如此&#…...

Stable diffusion 和 Midjourney 怎么选?

通过这段时间的摸索&#xff0c;我将和你探讨&#xff0c;对普通人来说&#xff0c;Stable diffusion 和 Midjourney 怎么选&#xff1f;最重要的是&#xff0c;学好影视后期制作对 AI 绘画创作有哪些帮助&#xff1f;反过来&#xff0c;AI 绘画对影视后期又有哪些帮助&#xf…...

c++网络编程

网络编程模型 c/s 模型&#xff1a;客户端服务器模型b/s 模型&#xff1a;浏览器服务器模型1.tcp网络流程 服务器流程&#xff1a; 1.创建套接字2.完善服务器网络信息结构体3.绑定服务器网络信息结构体4.让服务器处于监听状态5.accept阻塞等待客户端连接信号6.收发数据7.关闭套…...