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获取的数据

参考:
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/8351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CEEMDAN-WOA-LSTM】完备集合经验模态分解-鲸鱼优化-长短时记忆神经网络研究(Python代码实现)

目录 &#x1f4a5;1 概述 1.1 完备集合经验模态分解原理 1.2 鲸鱼优化 1.3 LSTM &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Python代码实现 &#x1f4a5;1 概述 1.1 完备集合经验模态分解原理 早期的 EMD 方法具有较强的自适应性&#xff0c;能够有…

【node.js】03-http模块

目录 一、什么是http模块 二、创建基本的WEB服务器 三、req请求对象 四、res响应对象 五、根据不同的url响应不同的JSON内容 一、什么是http模块 http 模块是 Node.js 官方提供的、用来创建 web 服务器的模块。通过 http 模块提供的 http.createServer() 方法&#xff0c;…

Etcd 节点为啥不能设置偶数

在etcd集群中&#xff0c;最好不要设置偶数数量的节点。这是因为etcd使用Raft一致性算法来确保数据的一致性和高可用性。Raft算法要求在进行Leader选举和数据复制时&#xff0c;节点数必须是奇数个&#xff0c;以保证算法的正确性和容错性。 主要原因如下&#xff1a; Leader选…

深度学习推理和训练

优化和泛化 深度学习的根本问题是优化和泛化之间的对立。 • 优化&#xff08;optimization&#xff09;是指调节模型以在 训练数据 上得到最佳性能&#xff08;即机器学习中的学习&#xff09;。 • 泛化&#xff08;generalization&#xff09;是指训练好的模型在 前所未…

软考高级科目怎么选?这份秘籍请收好!

2023年软考下半年报名即将开启&#xff0c;软考高级含金量比较高&#xff0c;每年很多人报名&#xff0c;要考软考高级&#xff0c;选哪个科目比较好是每年大家关心的&#xff0c;2023年软考高级选哪个科目还得结合自身所学和工作所需去选择。看工作岗位的需求&#xff0c;工作…

Java的0xFFFF在赋值、比较时引起的困惑

Java中的0xFFFF是整型&#xff0c;在赋值、比较的时候容易引起混淆&#xff0c;涉及到符号位、数值大小&#xff0c;赋值给什么类型的变量。我今天在编码的时候就遇到了一些困惑。用代码样例的形式记录下来&#xff0c;加深理解&#xff1a; package com.thb;public class Tes…

在Springboot集成Activiti工作流引擎-任务分配 三种模式【基础讲解】

任务分配 三种模式 1. 固定分配 指定人去做 2. UEL表达式分配 activiti使用uel表达式&#xff0c;UEL是java EE6规范的一部分&#xff0c;UEL即统一表达式语言 activiti支持两个UEL表达式&#xff1a;UEL-value 和 UEL-method UEL-value 写法 ${变量} ${assignee1} 测试 //…

RT-Thread快速入门-定时器管理

1时钟节拍 任何操作系统都需要提供一个时钟节拍&#xff0c;以供系统处理所有和时间有关的事件&#xff0c;如延时、线程的时间片轮转调度以及定时器超时等。时钟节拍&#xff08;OS Tick&#xff09;是操作系统中最小的时间单位。 时钟节拍是特定的周期性中断&#xff0c;这…

java模板模式

在Java中&#xff0c;模板模式&#xff08;Template Design Pattern&#xff09;用于定义算法的骨架&#xff0c;并将一些步骤的具体实现延迟到子类中。模板模式是一种行为型设计模式&#xff0c;它允许在父类中定义算法的结构&#xff0c;但允许子类重写某些步骤的具体实现。 …

vue预览和下载txt、PDF、execl等在线文件

因为浏览器默认能直接打开TXT、PDF等文件索引默认就是点击链接打开文件。但是浏览器却又不能在线打开execl、world等文件。 现在我们可以统一的实现文件的预览以及下载。 下载文件 downloadfile方法 downloadfile(url,fileName){const newUrl url;const x new XMLHttpRequ…

【vue3】vue3的一般项目结构、成功显示自己的vue3页面

一、vue3的一般项目结构 Vue 3并没有规定特定的项目结构&#xff0c;因此您可以根据项目的需求和个人偏好来组织您的Vue 3项目。以下是一个常见的Vue 3项目结构示例&#xff0c;供参考&#xff1a; your-project/|- public/| |- index.html # 应用程序的入口HTML文件…

微信小程序开发5

一、自定义组件-插槽 1.1、什么是插槽 在自定义组件的wxml结构中&#xff0c;可以提供一个<slot>节点(插槽)&#xff0c;用于承载组件使用者提供的wxml结构 1.2、单个插槽 在小程序中&#xff0c;默认每个自定义组件中允许使用一个<slot>进行占位&#xff0c;这种…

智慧井盖监测管理系统解决方案

一、方案概述 近年来&#xff0c;随着城市化的不断发展&#xff0c;城市地下管道设施的一步步完善&#xff0c;井盖作为城市基础设施中必不可少的一部分&#xff0c;其重要性也逐渐凸显。然而&#xff0c;在实际应用中&#xff0c;井盖监测和管理并不容易。如井盖地理位置分散&…

【libevent】http客户端1:转存http下载的数据

read_http_input // // HTTP endpoint: GET /rpc/1 (list methods) or POST /rpc/1 (execute RPC) // // JSON-RPC API endpoint. Handles all JSON-RPC method calls. // static void rpc_jsonrpc(evhttp_request *req, void *opaque) {RpcApiInfo *ap =

第一百一十四天学习记录:C++提高:类模板案例(黑马教学视频)

类模板案例 main.cpp代码&#xff1a; #include "myarray.hpp"void printIntArray(MyArray <int>& arr) {for (int i 0; i < arr.getSize(); i){cout << arr[i] << " ";}cout << endl; }void test01() {MyArray <int&…

史上最全,接口测试-Fiddler抓包常用功能总结(超详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Fiddler中常用的功…

冒泡排序实现原理

文章目录 前言一、算法原理二、复杂度三、Java实现总结 前言 冒泡排序&#xff08;Bubble Sort&#xff09;,是一种比较简单的排序算法。 它重复地走访要排序的元素列&#xff0c;依次比较两个相邻的元素&#xff0c;如果它们的顺序错误&#xff0c;则把它们交换位置。走访元…

macOS Monterey 12.6.8 (21G725) 正式版发布,ISO、IPSW、PKG 下载

macOS Monterey 12.6.8 (21G725) 正式版发布&#xff0c;ISO、IPSW、PKG 下载 本站下载的 macOS 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。另外也支持…

C++运算符:优先级

#include <iostream> using namespace std;//#define INT int //宏命令 // typedef int BOO; //移动 // INT a10; // BOO b 12;void fun(string& str) {int pos str.find(a);cout << "位置" << pos << endl;str.replace(pos,…

Windows Active Directory密码同步

大多数 IT 环境中&#xff0c;员工需要记住其默认 Windows Active Directory &#xff08;AD&#xff09; 帐户以外的帐户的单独凭据&#xff0c;最重要的是&#xff0c;每个密码还受不同的密码策略和到期日期的约束&#xff0c;为不同的帐户使用单独的密码会增加用户忘记密码和…