概览:
SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置,可以更加快速便捷地开发Spring项目,在开发过程当中可以专注于应用程序本身的功能开发,而无需在Spring配置上花太大的工夫。
- 简化开发:SpringBoot通过设计大量的自动化配置,减少了Spring原有样板化的配置,使得开发者可以快速构建应用。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。
- 提高开发效率:SpringBoot通过一系列Starter pom定义,整合各项功能及框架时,不需要在Maven的pom.xml中维护那些错综复杂的依赖关系,而是通过类似模块化的Starter模块定义来引用,使得依赖管理工作变得更加简单。同时,SpringBoot使用注解方式进行配置,减少了配置文件的使用,如XML配置,进一步提高了开发效率。
- 支持微服务架构:SpringBoot支持微服务架构,可以通过SpringCloud进行微服务的开发和管理。这使得SpringBoot在构建大型、分布式系统时具有显著优势。
- 独立运行:SpringBoot内嵌了多种服务器(如Tomcat、Jetty等),使得SpringBoot应用可以独立运行,无需外部服务器支持。这简化了应用的部署和运行过程。
- 外部化配置:SpringBoot支持多种配置方式,包括properties、YAML等,可以实现外部化配置,方便应用的配置管理。
- 强大的插件支持:SpringBoot提供了丰富的插件支持,可以集成各种第三方插件,扩展应用的功能。
- 应用监控: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 可以选择:Java、Groovy、Kotlin;
- 点击 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 ⽅法进⾏处理。
-
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.打包插件
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目录的作用,下一节对配置文件进行一个讲解。