【Spring Boot】(一)Spring Boot 项目的创建和使用

news2024/11/27 22:30:16

文章目录

  • 前言
  • 一、什么是 Spring Boot
    • 1.1 初识 Spring Boot
    • 1.2 Spring Boot 的核心设计思想
    • 1.3 Spring Boot 的优点
  • 二、Spring Boot 项目的创建
    • 2.1 使用 IDEA 创建
    • 2.2 使用网页创建
    • 2.3 项目的目录结构
  • 三、Hello World
    • 3.1 运行启动类
    • 3.2 通过浏览器页面输出 Hello World
    • 3.3 约定大于配置的体现


前言

在当今的软件开发领域,Spring Boot 是一个备受关注的 Java 框架。它为开发者提供了一种简化和高效的方式来构建 Java 应用程序。本文主要介绍了 Spring Boot 的概念、优点,并且演示了如何使用不同的方式来创建 Spring Boot 项目,最后演示了如何通过 Spring Boot 来输出 “Hello World”。

一、什么是 Spring Boot

1.1 初识 Spring Boot

Spring Boot 是一个用于构建 Java 应用程序的开源框架,它是 Spring Framework 的一个子项目,因此可以说 Spring Boot 项目也是 Spring 项目。Spring Boot 旨在简化和加速 Spring 应用程序的开发过程,通过提供默认配置和自动配置的方式,让开发者可以更专注于业务逻辑的实现,而无需过多的关注繁琐的配置和集成问题。

简单来说,Spring 的诞生是为了简化 Java 程序的开发,而 Spring Boot 的诞生则是为了简化 Spring 程序的开发

从 Spring Boot 的翻译(Spring 脚手架)就能看出:脚手架是为了修建房屋而搭建的,目的是为了加快房屋的修建速度;Spring 的脚手架,那么就意味着为了加快 Spring 程序的开发而创建的。

1.2 Spring Boot 的核心设计思想

Spring Boot 的核心设计思想是约定大于配置(Convention Over Configuration)自动配置(Auto-configuration)

1. 约定大于配置

Spring Boot 是通过一系列的约定来提供默认的行为,使得开发者在大多数情况下无需手动配置,从而减少了项目的复杂性。例如,当创建一个 Spring Boot 的 Web 项目的时候,它会默认配置一个内嵌的 Web 服务器,而无需我们显示地去配置 Tomcat 或者 Jetty 容器。

2. 自动配置
Spring Boot 项目会根据应用程序的依赖和类路径当中的组件,自动为应用程序配置和装配各种功能。这就意味着我们可以在项目中引入一些特定的依赖,Spring Boot 就会自动根据这些依赖来配置相应的功能,从而简化了很多手动配置的过程。

1.3 Spring Boot 的优点

学习和使用 Spring Boot 给我们带来了非常多的便利,例如:

  1. 提高开发效率:Spring Boot 的约定大于配置自动配置功能使得开发的过程更加高效。它大量减少了样板代码的编写,让开发者可以更专注于业务逻辑的实现,从而提高开发效率

  2. 简化配置:Spring Boot 内置了很多默认的配置,让开发者无需手动配置大量的选项。不仅能够减少出错的机会,同时大大降低了项目的复杂性。

  3. 嵌入式服务器Spring Boot 中包含了常用的 Web 服务器,如 Tomcat、Jetty等,这些使得将应用程序打包成可执行的 JAR 文件并运行变得非常简单。不需要额外部署一个独立的 Web 服务器,可以轻松的将应用程序部署到各种环境中。

  4. 微服务支持:Spring Boot 对于构建微服务架构提供了很好的支持,可以方便地创建和管理各个微服务,通过 Spring Cloud 项目还可以实现服务注册与发现、负载均衡、断路器模式等微服务相关功能。

  5. 大量的起步依赖:Spring Boot 提供了许多预配置的 “Starter” 依赖,涵盖了各种常用的库和框架,例如Spring Data JPA、Spring Security、Thymeleaf等。这些起步依赖简化了集成其他框架的过程,使得构建功能丰富的应用程序变得更加容易。

二、Spring Boot 项目的创建

2.1 使用 IDEA 创建

在使用 IDEA 创建 Spring Boot 项目的时候,如果使用的是社区版,首先需要安装 Spring Boot Helper 插件,但需要注意的是 IDEA 的版本要是 21 版或以前的,因为自 22 版开始,这个插件就收费了。

当然,如果是专业版的话就不需要安装了这个插件了,毕竟是 VIP 嘛。以下演示的是使用 IDEA 2022 专业版创建的 Spring Boot 项目。

  1. 首先,使用 IDEA 新建项目

如下图所示:

注意,其中选择使用的JDK版本和默认的Java版本必须保持一致,否则会创建失败。

  1. 点击 Next,选择 Spring Boot 版本以及所需要的依赖

在选择版本的时候,由于使用的是 JDK 8,因此选择的 Spring Boot 版本是 2.xx,而 3.xx 的版本需要使用 JDK17等较新版本。

然后选择需要的依赖,

  1. 最后选择 Create 创建

    如果能够看到其中的启动类,并且有可以运行的三角符号,则说明创建成功了。

2.2 使用网页创建

当使用 IDEA 创建 Spring Boot 项目的时候,我们发现了一个 start.spring.io 的地址,打开这个地址,就可以直接在网页上创建 Spring Boot 项目了。

  1. 打开网址


此时可以发现各种各样的选项。其中左侧是一些基本的配置选项,而右侧则是所需依赖的选择。

  1. 选择配置


选择的内容和使用 IDEA 创建时选择的一模一样。

  1. 选择依赖

  1. 下载压缩包


点击 GENERATE 下载压缩包,当然可以点击旁边的 EXPLORE 进行预览。

  1. 对刚才下载的压缩包解压,然后使用 IEDA 打开解压后的文件

解压:

使用 IEDA 打开:


5. 此时便成功使用网页创建了一个 Spring Boot 项目了

另外,也可以使用阿里云 start.aliyun.com 来创建,其创建方式一模一样:

2.3 项目的目录结构

当创建完一个 Spring Boot 项目的时候,可以看到其目录结构如下图所示:

这是一个典型的Spring Boot项目的目录结构,下面是各个目录的简要说明:

  • src/main/java: 主要Java代码的存放目录。这里通常包含了项目的主要代码逻辑,例如控制器(controller)、模型(model)、数据访问层(repository)等。

  • src/main/resources: 主要的资源文件存放目录。在这里,可以放置配置文件、静态资源文件、模板文件等。application.propertiesapplication.yml通常用于配置应用程序的属性。

  • src/test: 测试代码的存放目录。在这里,可以编写各种测试用例来测试程序代码。

  • pom.xml: Maven项目的配置文件。Maven是Spring Boot项目的默认构建工具,通过pom.xml文件配置项目的依赖和构建设置。

  • .mvn:它包含了Maven Wrapper相关的文件,用于在不需要手动安装Maven的情况下执行Maven构建和其他Maven任务。

  • mvnwmvnw.cmd:这是Maven Wrapper的脚本,用于在不安装Maven的情况下执行Maven命令。

  • HELP.md:一个Markdown格式的帮助文档文件。它用于提供有关项目的简要介绍、常见问题解答(FAQ)、常用命令、快速入门指南等内容,帮助开发者快速了解和使用项目。

三、Hello World

3.1 运行启动类

点击启动类的 main 方法就可以运行 Spring Boot 项目了,启动成功如下图所示:

通过启动打印的日志记录,可以发现默认使用的端口号是 8080:

3.2 通过浏览器页面输出 Hello World

demo 目录下创建一个子目录 controller,然后在里面创建一个 HelloController类。 这是一个简单的 Spring Boot 控制器(Controller)类,用于处理来自/hello路径的 HTTP 请求,并返回 “Hello World” 字符串作为响应。

@Controller
@ResponseBody
public class HelloController {

    @RequestMapping("/hello")
    public String hello(){
        return "Hello World";
    }
}

对这段代码的解释如下:

  • @Controller:这个注解标记该类为 Spring 的控制器类。它告诉 Spring 框架这是一个处理 HTTP 请求的控制器。

  • @RequestMapping("/hello"):这个注解将 /hello 路径映射到 hello() 方法上。当客户端发送请求到 /hello 时,Spring Boot会调用 hello() 方法处理该请求。

  • @ResponseBody:这个注解告诉 Spring 将方法的返回值直接作为 HTTP 响应的内容返回,而不是跳转到一个视图页面。在这个例子中,hello() 方法返回的 “Hello World” 字符串会直接作为 HTTP 响应返回给客户端。

这个简单的 Spring Boot 程序演示了如何创建一个基本的控制器,处理一个 HTTP 请求,并返回响应内容。运行这个程序后,当在浏览器中访问http://localhost:8080/hello,将会看到 “Hello World” 这个字符串作为响应输出在浏览器上。

3.3 约定大于配置的体现

在上面的第一个Spring Boot 程序中,我们可以看到约定大于配置的体现,具体如下

  1. 命名约定:在 Spring Boot 中,默认情况下,控制器类和方法的命名约定决定了它们的行为

    • 在这个例子中,HelloController类被标记为@Controller,因此 Spring Boot 会将其识别为一个控制器类,并处理 HTTP 请求。
    • hello() 方法被标记为@RequestMapping("/hello"),因此它会处理来自/hello路径的HTTP请求。
    • 这些默认的命名约定消除了大量的配置,使得开发者不需要手动配置控制器类和方法与请求路径之间的映射。
  2. @ResponseBody注解:在hello()方法中,使用了@ResponseBody注解,这告诉 Spring Boot 将方法的返回值直接作为 HTTP 响应的内容返回。

    • 这意味着我们不需要为hello()方法定义一个额外的视图模板,因为返回的 “Hello World” 字符串会直接成为响应的内容。
    • 这种约定简化了处理响应的过程,让开发者可以专注于业务逻辑而不用担心视图渲染。
  3. 默认配置:Spring Boot 提供了大量的默认配置,例如默认的Web服务器(如:Tomcat、Jetty)、默认的数据源配置、默认的日志配置等。这些默认配置在大多数情况下都能满足需求,减少了手动配置的工作。开发者只需要在必要的情况下进行配置覆盖即可。

通过这些约定,我们在上述代码中没有显式地进行大量的配置,而是依赖于 Spring Boot 的约定和默认配置。这样使得代码简洁、易读,并且减少了不必要的冗余代码,提高了开发效率。这就是约定大于配置的典型体现,使得 Spring Boot 应用程序的开发变得更加简单和高效。

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

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

相关文章

当编程遇上AI,纵享丝滑

目录 前言 一、提出需求 二、检查代码 三、进一步提出需求 总结 前言 自从CHATGPT火了以后,我发现我身边的人再也不怕写报告了,什么个人总结,汇报材料,年度总结,伸手就来(反正哪些报告也没人看&#x…

JavaScript 一段代码快速入门

仅记录了和c有所不同之处,其余类似。 一段简单代码 // 关注点分离,指html页面设计和javascript页面行为分离// 对象,键值对形式 const user {name: "gyf",age: 20,jobs: ["front-end", "engineer", 2, true…

Syncfusion Essential Edit for WPF Crack

Syncfusion Essential Edit for WPF Crack 在任何WPF应用程序中启用语法高亮显示。 Syncfusion Essential Edit for WPF是一款具有所有基本功能的编辑器,如文本编辑、剪切、复制和粘贴。它允许用户从各种文件格式打开文件并将其保存为各种文件格式。Syncfusion Esse…

字符串的匹配算法【学习算法】

字符串的匹配算法【学习算法】 前言版权推荐字符串的模式匹配BF模式匹配算法KMP模式匹配算法 Java中实现算法官方题解调用Java的API参考Java的APIBF算法KMP算法 C中实现算法KMP算法 最后 前言 2023-8-6 12:06:42 以下内容源自《【学习算法】》 仅供学习交流使用 版权 禁止其…

UDS服务基础篇之31

UDS服务基础篇之31服务 前言 正如前文《UDS基础之2F服务》所说的2F服务与今天本文要将的31服务存在着有些相似之处,因此需要针对31服务本身进行较为细致的剖析,在此小T抛出如下几个基本问题供大家思考: 你知道31服务是干什么的吗&#xff…

K8S系列文章之 内外网如何互相访问

K8S中网络这块主要考虑 如何访问外部网络以及外部如何访问内部网络 访问外网服务的两种方式 需求 k8s集群内的pod需要访问mysql,由于mysql的性质,不适合部署在k8s集群内,故k8s集群内的应用需要链接mysql时,需要配置链接外网的mysql,本次测试…

35岁焦虑:体能下滑,新陈代谢变慢,还是我们的日常行为?

35岁焦虑:体能下滑,新陈代谢变慢,还是我们的日常行为? 😇博主简介:我是一名正在攻读研究生学位的人工智能专业学生,我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任…

python的下载和安装步骤,python下载安装教程3.10.0

大家好,给大家分享一下python下载安装教程3.10.0,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载&a…

了解HTTP代理日志:解读请求流量和响应信息

嗨,爬虫程序员们!你们是否在了解爬虫发送的请求流量和接收的响应信息上有过困扰?今天,我们一起来了解一下。 首先,我们需要理解HTTP代理日志的基本结构和内容。HTTP代理日志是对爬虫发送的请求和接收的响应进行记录的文…

坐标转换-使用geotools读取和转换地理空间表的坐标系(sqlserver、postgresql)

前言: 业务上通过GIS软件将空间数据导入到数据库时,因为不同的数据来源和软件设置,可能导入到数据库的空间表坐标系是各种各样的。 如果要把数据库空间表发布到geoserver并且统一坐标系,只是在geoserver单纯的设置坐标系只是改了…

听别人说学习机器人哪个方向合适不重要-自己想做什么最重要

2023年7-8月暑期档有一部火热的电影《封神之朝歌风云》 姬昌那句「你是谁的儿子不重要,你是谁才重要」 年轻人要勇于突破权威强加于自身的桎楛,要独立思考,果敢刚毅。 唯有如此才能摆脱工具人的宿命。 AI: 电影《封神之朝歌风云…

IDEA项目实践——Spring框架简介,以及IOC注解

系列文章目录 IDEA创建项目的操作步骤以及在虚拟机里面创建Scala的项目简单介绍 IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介 IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——动态SQL、关系映射、注解开发 文章目…

前端js--旋转幻灯片

效果图 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><link rel"stylesheet" href"…

python打印oracle19c版本号

Author: liukai 2810248865qq.com Date: 2022-08-18 04:28:52 LastEditors: tkhywang 2810248865qq.com LastEditTime: 2023-07-08 08:58:24 FilePath: \PythonProject01\&#xfffd;&#xfffd;ӡoracle&#xfffd;&#xfffd;&#xfffd;ݿ&#xfffd;汾&#xfffd;&a…

《孙子兵法》是世界上最著名的中国著作,不服来看,趣讲《孙子兵法》第1讲

《孙子兵法》是世界上最著名的中国著作&#xff0c;不服来看&#xff01;趣讲《孙子兵法》【第1讲】 世界上最有名的中国著作肯定是《孙子兵法》。在著名的美国西点军校是必修课。 在企业管理领域&#xff0c;听一些讲座&#xff0c;经常会引用到《孙子兵法》的一些名句&#…

手把手教你用idea实现Java连接MySQL数据库

目录 1.下载MySQL 2.下载mysql 的jdbc驱动 3.将驱动jar包导入idea 4.通过Java测试数据库是否连接成功 1.下载MySQL 首先如果没有mysql的需要先下载MySQL&#xff0c;可以看这个教程 MYSQL安装手把手&#xff08;亲测好用&#xff09;_程序小象的博客-CSDN博客 2.下载mysql…

IDEA Run SpringBoot程序步骤原理

这个文章不是高深的原理文章&#xff0c;仅仅是接手一个外部提供的阉割版代码遇到过的一个坑&#xff0c;后来解决了&#xff0c;记录一下。 1、IDEA Run 一个SpringBoot一直失败&#xff0c;提示找不到类&#xff0c;但是maven install成功&#xff0c;并且java -jar能成功ru…

红帽8.2版本CSA题库:第三题调试 SELinux

semanage port -a -t http_port_t -p tcp 82 semanage fcontext -m -t httpd_sys_content_t /var/www/html/file1 //必须先做这步再做restorecon restorecon -Rv /var/www/html firewall-cmd --permanent --add-port82/tcp firewall-cmd --reload systemctl enable --now htt…

Fiddler无法抓包怎么解决?这些配置项你需要检查。尤其是最后一项。

有时候&#xff0c;我们的fiddler启动是正常的&#xff0c;但是就是抓不到包&#xff0c;原因有很多。但多数情况都是因为配置不正确&#xff0c;接下来我们就看下有哪些导致fiddler抓不到的设置 。 1 是否配置代理服务器 一般情况下此设置会自动配置&#xff0c;但是如果抓不…

C++拷贝wstring到wchar_t*中踩的坑

使用wchar_t指针将wstring中的数据拿出来&#xff0c;发现释放的时候异常&#xff0c;不是深拷贝和浅拷贝的问题 首先先看看string怎末复制到char中&#xff0c;代码如下 string str1"\"0.2.0\"";char* tnew char[str.size()1];memcpy(t, str1.c_str(), s…