第一章 Spring Boot快速⼊⻔ —— 构建Spring Boot项目

server/2024/11/18 8:24:32/

概览:

        SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置,可以更加快速便捷地开发Spring项目,在开发过程当中可以专注于应用程序本身的功能开发,而无需在Spring配置上花太大的工夫。

  1. 简化开发:SpringBoot通过设计大量的自动化配置,减少了Spring原有样板化的配置,使得开发者可以快速构建应用。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。
  2. 提高开发效率:SpringBoot通过一系列Starter pom定义,整合各项功能及框架时,不需要在Maven的pom.xml中维护那些错综复杂的依赖关系,而是通过类似模块化的Starter模块定义来引用,使得依赖管理工作变得更加简单。同时,SpringBoot使用注解方式进行配置,减少了配置文件的使用,如XML配置,进一步提高了开发效率。
  3. 支持微服务架构:SpringBoot支持微服务架构,可以通过SpringCloud进行微服务的开发和管理。这使得SpringBoot在构建大型、分布式系统时具有显著优势。
  4. 独立运行:SpringBoot内嵌了多种服务器(如Tomcat、Jetty等),使得SpringBoot应用可以独立运行,无需外部服务器支持。这简化了应用的部署和运行过程。
  5. 外部化配置:SpringBoot支持多种配置方式,包括properties、YAML等,可以实现外部化配置,方便应用的配置管理。
  6. 强大的插件支持:SpringBoot提供了丰富的插件支持,可以集成各种第三方插件,扩展应用的功能。
  7. 应用监控:SpringBoot提供了准生产级的应用监控功能,可以通过SSH、HTTP、Telnet等方式对服务器运行的项目进行监控,确保应用的稳定性和可靠性。

总的来说,SpringBoot以其简化开发、提高开发效率、支持微服务架构、独立运行、外部化配置、强大的插件支持以及应用监控等特性,成为了现代Java应用开发中不可或缺的工具。

一:构建Spring Boot⼯程

        创建的⽅式多种多样,可以通过Maven来⼿⼯构建或是通过脚⼿架等⽅式快速搭建,也可以通过Spring Initializr⻚⾯⼯具来创建。本⽂使用常用的方式构建Intellij嵌⼊的Spring Initializr⼯具,快速的构建出基础的SpringBoot⼯程。

  • 菜单栏中选择File -> New -> Project,其中Service Url指向的地址就是Spring官方提供的Spring Initializr.工具地址,所l以这里创建的工程实际上也是基于它的Web工具来实现的。 

  • 看到如下图所示的⼯程信息窗⼝,在这⾥可以编辑要创建的⼯程信息。其中, Type 可以改变我们要构建的⼯程类型,⽐如:Maven、 Gradle; Language 可以选择:JavaGroovyKotlin;

  • 点击 Next ,进⼊选择Spring Boot版本和依赖管理的窗⼝。在这⾥值的我们关注的是,它不仅包 含了Spring Boot Starter poms中的各个依赖,还包含了Spring Cloud的各种依赖。

  •  这里选择版本,以及web组件,快速构建一个web项目,点击 Finish 完成⼯程的构建。

⼆、HelloSpringboot详解

构建项目完成

 1..启动应⽤类

只需加⼊⼀个 Spring Boot 启动⽗依赖即可。

代码如下:

java">import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;// Spring Boot应⽤启动类
@SpringBootApplication
public class HelloSpringbootApplication {public static void main(String[] args) {SpringApplication.run(HelloSpringbootApplication.class, args);}}
1.@SpringBootApplication Spring Boot 应⽤的标识。
2. Application 很简单,⼀个 main 函数作为主⼊⼝。SpringApplication 引导应⽤,并将 Application 本身作为参数传递给 run ⽅法。具体 run ⽅法会启动嵌 ⼊式的Tomcat 并初始化 Spring 环境及其各 Spring 组件。

2.启动运⾏

  • a.运行这个main方法。

  • b.控制台打印启动成功。

日志如下:

java">  .   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v3.3.5)2024-11-16T22:12:35.512+08:00  INFO 9012 --- [           main] c.b.h.HelloSpringbootApplication         : Starting HelloSpringbootApplication using Java 17.0.2 with PID 9012 (F:\das-parent-master\springboot-project\hello-springboot\target\classes started by DELL in F:\das-parent-master\springboot-project\hello-springboot)
2024-11-16T22:12:35.517+08:00  INFO 9012 --- [           main] c.b.h.HelloSpringbootApplication         : No active profile set, falling back to 1 default profile: "default"
2024-11-16T22:12:36.625+08:00  INFO 9012 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)
2024-11-16T22:12:36.683+08:00  INFO 9012 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2024-11-16T22:12:36.684+08:00  INFO 9012 --- [           main] o.apache.catalina.core.StandardEngine    : Starting Servlet engine: [Apache Tomcat/10.1.31]
2024-11-16T22:12:36.751+08:00  INFO 9012 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2024-11-16T22:12:36.753+08:00  INFO 9012 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1175 ms
2024-11-16T22:12:37.213+08:00  INFO 9012 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path '/'
2024-11-16T22:12:37.228+08:00  INFO 9012 --- [           main] c.b.h.HelloSpringbootApplication         : Started HelloSpringbootApplication in 2.264 seconds (process running for 4.224)

3.Controller

java">package com.boot.hellospringboot.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/test")public String tets(){return "hello spring boot";}
}
@RestController,@RequestMapping注解是来⾃ SpringMVC 的注解
@RestController :提供实现了 REST API ,可以服务 JSON,XML 或者其他。这⾥是以 String
形式渲染出结果。 
@RequestMapping :提供路由信息, "/test“ 路径的HTTP Request都会被映射到 test ⽅法进⾏处理。
  • a.启动成功

访问 http://localhost:8080/hello 即可打印 hello spring boot!

  • b.修改默认端口号

上方日志显示服务器端口等信息,默认是 8080 ,可以在 application.properties 配置文件
中修改默认端口号8001,重新启动。
java">#修改端口
server.port=8001

4.pom.xml依赖讲解

java"><!-- Spring Boot 版本依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.5</version><relativePath/></parent><groupId>com.boot</groupId><artifactId>hello-springboot</artifactId><version>0.0.1-SNAPSHOT</version><name>hello-springboot</name><description>Demo project for Spring Boot</description><properties><java.version>17</java.version></properties><dependencies><!-- Spring Boot web依赖 --><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>

a. 父项目(版本控制中心)

java">    <!-- Spring Boot 版本依赖 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.5</version><relativePath/></parent>
可以看成一个版本控制中心,我们所配置的依赖不需要说明版本,因为版本控制中心
已经说明了。

b.Web模块相关依赖

java"> <!-- Spring Boot web依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>

c.单元测试依赖

java">      <!-- 测试依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>

d.打包插件

将应用打包成一个可执行 Jar 包,直接使用 java -jar xxxx 的命令来执行。
java"><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

5.test目录

        在Spring Boot项目中,test目录扮演着至关重要的角色。这个目录专门用于存放测试代码和资源,以确保项目的代码质量和稳定性。通过编写和管理测试代码和资源,开发者可以及时发现并修复潜在的问题,从而降低发布风险并提高项目的可靠性。

以下是关于Spring Boot项目中test目录作用的详细解释:

  • Java测试代码test/java子目录用于存放测试Java代码。这些代码通常包括单元测试、集成测试等,用于验证项目的各个部分是否按预期工作。
  • 测试资源文件test/resources子目录用于存放测试资源文件,如测试配置文件、测试数据等。这些资源文件在测试过程中被加载和使用,以支持测试代码的执行。
  • 单元测试:在Spring Boot项目中,开发者可以编写单元测试来验证单个类或方法的行为。这些测试通常使用JUnit等测试框架来实现,确保代码的正确性和稳定性。
  • 集成测试:集成测试用于验证多个组件或服务之间的交互是否正常。在Spring Boot项目中,可以使用@SpringBootTest注解来启动Spring Boot应用程序上下文,从而进行集成测试。
  • 测试运行:Spring Boot项目支持使用Maven或Gradle等构建工具来运行测试。开发者只需在项目的根目录下执行相应的命令(如mvn test./gradlew test),构建工具就会扫描src/test/java/目录下的测试类,并执行其中的测试方法。
  • 测试管理:通过Maven或Gradle等构建工具,开发者可以方便地管理测试依赖、配置测试插件、生成测试报告等。这些功能有助于提升测试效率和质量。
  • 测试注解:使用@Test注解来标记测试方法,使用@SpringBootTest注解来加载Spring Boot应用程序上下文(适用于集成测试)。

小结:

        本节主要讲解快速创建springboot项目,web依赖,主启动类SpringBootApplication注解标识Spring Boot 应⽤,main()方法启动,test目录的作用,下一节对配置文件进行一个讲解。


http://www.ppmy.cn/server/142858.html

相关文章

模糊神经网络模糊逻辑 MATLAB 函数详解

模糊神经网络模糊逻辑 MATLAB 函数详解 一、引言 模糊神经网络&#xff08;Fuzzy Neural Network&#xff0c;FNN&#xff09;融合了模糊逻辑和神经网络的优点&#xff0c;在处理具有模糊性和不确定性的复杂系统中有着广泛应用。MATLAB作为一款功能强大的科学计算软件&#x…

如何用python将pdf转换为json格式

使用 Python 将 PDF 文件转换为 JSON 格式&#xff0c;主要步骤如下&#xff1a; 读取 PDF 内容&#xff1a;首先使用一个库读取 PDF 文件内容&#xff0c;如 PyMuPDF 或 pdfplumber。这些库可以逐页提取文本&#xff0c;并返回结构化的数据。 组织数据到 JSON&#xff1a;将提…

15分钟学 Go 第 59 天 :更高级的Go话题——接触微服务

第59天&#xff1a;更高级的Go话题——接触微服务 欢迎来到Go语言的高级主题学习。今天我们将深入探讨微服务架构&#xff0c;如何使用Go语言构建微服务&#xff0c;以及相关的最佳实践和工具。在这一节中&#xff0c;我们会通过示例代码、流程图和表格来帮助你理解&#xff0…

HTML5 Video(视频)

HTML5 Video(视频) HTML5视频是现代网页设计中不可或缺的一部分,它允许开发者在网页中嵌入视频内容,为用户提供丰富多样的媒体体验。本文将深入探讨HTML5视频的各个方面,包括其基本用法、支持的格式、自定义播放器、浏览器兼容性以及最佳实践。 一、HTML5视频的基本用法 …

Puppeteer教程:使用CSS选择器点击和爬取动态数据

1. 前言 在现代的网页中&#xff0c;许多数据是通过JavaScript动态加载的&#xff0c;这使得传统的爬虫工具&#xff08;如requests或BeautifulSoup&#xff09;无法获取到这些数据。因此&#xff0c;为了更好地处理动态网站的数据爬取&#xff0c;我们需要使用像Puppeteer这样…

数据库运维实操优质文章文档分享(含Oracle、MySQL等) | 2024年10月刊

本文为大家整理了墨天轮数据社区2024年10月发布的优质技术文章/文档&#xff0c;主题涵盖Oracle、MySQL、PostgreSQL等主流数据库系统以及国产数据库的技术实操&#xff0c;从基础的安装配置到复杂的故障排查&#xff0c;再到性能优化的实用技巧及常用脚本等&#xff0c;分享给…

OpenGL 进阶系列14 - 曲面细分着色器

一:概述 OpenGL 曲面细分着色器(Tessellation Shader)是一种用于图形渲染的高级着色器,旨在对图形进行细分处理。它使得开发者能够将粗糙的模型细分成更精细的网格,从而实现更加平滑和细致的表面。曲面细分着色器通过引入两个主要阶段来实现细分:控制着色器、细分着色器和…

Linux常用命令之wc命令详解

wc 命令详解 wc&#xff08;word count&#xff09;命令是 Linux 和类 Unix 系统中的一个强大工具&#xff0c;用于统计文件中的行数、单词数、字节数和字符数。通过不同的选项&#xff0c;用户可以自定义统计的内容。wc 命令不仅适用于单个文件&#xff0c;还可以处理多个文件…