SpringBoot(一)之初始化
文章目录
SpringBoot框架
Spring Boot 是一个开源的 Java Web 开发框架,它基于 Spring 框架,旨在简化和加快 Spring 应用程序的开发过程。它提供了一种快速构建应用程序的方式,通过自动配置和约定优于配置的原则,让开发者能够更专注于业务逻辑的实现,而不必花费过多时间在繁琐的配置上。
以下是 Spring Boot 的一些主要特点和优势:
- 简化配置: Spring Boot 使用约定优于配置的原则,通过自动配置来减少开发者的配置工作。许多常见的配置都会自动完成,开发者只需专注于业务逻辑的编写。
- 内嵌服务器: Spring Boot 内置了多种常见的 Web 服务器,如 Tomcat、Jetty 等,使得开发者可以直接在应用中运行,而不需要额外部署独立的服务器。
- 依赖管理: Spring Boot 使用 Maven 或 Gradle 进行依赖管理,通过提供一组合适的“starter”依赖,可以很方便地集成常用的框架和库,如 Spring MVC、JPA、Thymeleaf 等。
- 监控和管理: Spring Boot 提供了丰富的监控和管理功能,可以轻松集成健康检查、指标监控、日志记录等,方便开发者对应用程序进行监控和管理。
- 集成测试: Spring Boot 提供了方便的集成测试支持,可以快速编写和运行集成测试,保证应用程序的质量和稳定性。
- 生态系统: Spring Boot 作为 Spring 生态系统的一部分,与其他 Spring 项目(如 Spring Cloud、Spring Security 等)无缝集成,为开发者提供了丰富的功能和工具支持。
总之,Spring Boot 以其简化配置、内嵌服务器、依赖管理、监控管理、集成测试等特点,极大地提高了 Java Web 应用程序的开发效率和质量,是目前广泛应用的优秀框架之一。
SpringBoot简化配置
1. 创建SpringBoot项目
1.1 利用idea,新建项目,选择Spring Initializr
,如下图所示
1.2 选择要加入的SpringBoot模块以及版本信息,如下图所示
点击创建,等待maven下载jar包等一系列操作后,SpringBoot项目初始化完成。
tips
:这里由于idea版本过高,所以需要手动修改pom.xml中SpringBoot版本和JDK版本。
将parent节点中的父版本号更改为2.6.4
,将properties中的版本号更改为8
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>8</java.version>
</properties>
关于初始化错误
如图所示,由于Spring的服务器在国外,所以可能会出现如图所示的网络错误。
解决办法:
- 多次点击重试创建
2. SpringBoot项目结构
SpringBoot项目的结构图如下
如图所示,可以看到结构由pom.xml
和resources
还有SpringBootStartApplicaiton主类构成
主类
//该注解标注该项目是一个SpringBoot项目,
@SpringBootApplication
public class SpringBootStartApplication {
//项目的入口,需要将该主类作为参数传给SpringApplication.run方法,作为配置启动
public static void main(String[] args) {
SpringApplication.run(SpringBootStartApplication.class, args);
}
}
pom.xml
<?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>
//定义SpringBoot项目的
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>cn.axj</groupId>
<artifactId>spring-boot-start</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-start</name>
<description>spring-boot-start</description>
<properties>
<java.version>8</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>
1. 关于spring-boot-starter-parent
spring-boot-starter-parent
是 Spring Boot 提供的一个父项目,用于管理 Spring Boot 应用程序的 Maven 或 Gradle 构建。它提供了一组默认的配置和插件,以及一些常用的依赖管理,帮助开发者更方便地构建和管理 Spring Boot 项目。
主要功能包括:
- 默认配置:
spring-boot-starter-parent
定义了一组默认的 Maven 或 Gradle 配置,包括编译器版本、编码规范检查、资源过滤等,让开发者无需重复配置这些基本设置。 - 依赖管理:
spring-boot-starter-parent
预先定义了一组常用的依赖版本,如 Spring Framework、Spring Boot、Spring Boot Starter、Spring Boot Test 等,开发者只需在项目中引入相应的 Starter 依赖,无需手动指定版本号。 - 插件配置:
spring-boot-starter-parent
配置了一些常用的 Maven 或 Gradle 插件,如 Spring Boot Maven Plugin、Surefire Plugin、PMD Plugin 等,用于简化项目的构建和管理过程。 - 版本管理:
spring-boot-starter-parent
定义了一组常用的第三方库的版本号,如 Hibernate、Jackson、Log4j 等,使得开发者可以更方便地管理这些依赖的版本冲突。
使用 spring-boot-starter-parent
作为父项目可以带来诸多好处,如统一管理依赖版本、减少重复配置、提高项目的可维护性等。因此,在创建 Spring Boot 项目时,通常推荐使用 spring-boot-starter-parent
作为父项目来简化项目的构建和管理。
2. 关于spring-boot-starter-web
spring-boot-starter-web
是 Spring Boot 提供的一个 Starter 模块,用于快速搭建基于 Spring MVC 的 Web 应用程序。它包含了一系列必要的依赖和配置,使得开发者可以快速启动一个 Web 项目,并且可以方便地集成其他相关的 Starter 模块。
主要功能包括:
- Spring MVC:
spring-boot-starter-web
包含了 Spring MVC 框架所需的依赖和配置,包括控制器、视图解析器、消息转换器等,使得开发者可以方便地编写和管理控制器,并将请求映射到相应的处理方法。 - 嵌入式容器:
spring-boot-starter-web
默认使用嵌入式的 Servlet 容器(如 Tomcat、Jetty),因此无需额外配置独立的 Servlet 容器,可以方便地在开发环境中启动和测试应用程序。 - 静态资源处理:
spring-boot-starter-web
集成了对静态资源(如 HTML、CSS、JavaScript 文件)的处理支持,使得这些资源可以被正确地访问和加载。 - 模板引擎:
spring-boot-starter-web
支持集成多种模板引擎(如 Thymeleaf、FreeMarker、Velocity 等),开发者可以根据自己的喜好选择合适的模板引擎来生成动态内容。 - 数据绑定和验证:
spring-boot-starter-web
提供了数据绑定和验证的支持,可以方便地将请求参数绑定到控制器方法的参数中,并进行数据验证和处理。 - RESTful 支持:
spring-boot-starter-web
提供了对构建 RESTful Web 服务的支持,包括通过注解配置 RESTful API、使用 Jackson 进行 JSON 数据处理等。
总之,spring-boot-starter-web
是 Spring Boot 中一个非常常用的 Starter 模块,它简化了基于 Spring MVC 的 Web 应用程序的开发和配置过程,使得开发者可以更快速、更方便地构建和部署 Web 项目。
3. 关于spring-boot-starter-test
spring-boot-starter-test
是 Spring Boot 提供的一个 Starter 模块,用于在 Spring Boot 应用程序中进行单元测试和集成测试。它包含了一系列常用的测试工具和框架,使得开发者可以方便地编写、运行和管理测试用例。
主要功能包括:
- JUnit:
spring-boot-starter-test
默认集成了 JUnit 测试框架,开发者可以使用 JUnit 编写单元测试和集成测试用例,对应用程序的各个组件进行测试。 - Spring Test:
spring-boot-starter-test
提供了 Spring Test 框架的集成支持,可以方便地使用 Spring 的上下文加载机制,进行 Spring 应用程序的集成测试。 - Spring Boot Test:
spring-boot-starter-test
提供了 Spring Boot Test 框架的集成支持,可以方便地编写和运行针对 Spring Boot 应用程序的集成测试,包括对控制器、服务、数据访问层等组件的测试。 - Mockito:
spring-boot-starter-test
默认集成了 Mockito 框架,用于模拟和测试对象之间的交互关系,使得开发者可以方便地编写和管理 Mock 对象。 - Hamcrest:
spring-boot-starter-test
默认集成了 Hamcrest 断言库,用于编写更加灵活和易读的断言语句,提高测试代码的可读性和可维护性。 - Spring Boot 支持:
spring-boot-starter-test
还提供了一些 Spring Boot 相关的辅助类和工具,如@SpringBootTest
注解、TestRestTemplate
、@MockBean
注解等,用于简化 Spring Boot 应用程序的集成测试过程。
总之,spring-boot-starter-test
是 Spring Boot 中一个非常常用的 Starter 模块,它简化了在 Spring Boot 应用程序中进行单元测试和集成测试的过程,使得开发者可以更方便地编写、运行和管理测试用例,提高应用程序的质量和稳定性。
4. 关于spring-boot-maven-plugin
spring-boot-maven-plugin
是 Spring Boot 提供的一个 Maven 插件,用于将 Spring Boot 应用程序打包成可执行的 JAR 文件或者 WAR 文件,并提供了一些其他功能,如运行应用程序、生成和处理资源文件等。
以下是 spring-boot-maven-plugin
的一些主要功能:
- 打包应用程序:
spring-boot-maven-plugin
可以将 Spring Boot 应用程序打包成可执行的 JAR 文件或者 WAR 文件,这样可以方便地将应用程序部署到服务器上运行。 - 运行应用程序: 通过
spring-boot:run
命令,可以直接在开发环境中运行 Spring Boot 应用程序,而不需要额外安装或配置服务器环境。 - 处理资源文件:
spring-boot-maven-plugin
可以处理应用程序的资源文件,如静态资源、模板文件等,使得这些文件能够被正确地打包和访问。 - 自定义属性: 可以通过插件配置自定义应用程序的属性,如服务器端口号、上下文路径等,从而实现应用程序的灵活配置。
- 重新打包:
spring-boot:repackage
命令可以重新打包已经存在的 JAR 文件,用于添加或更新应用程序的依赖,而无需手动重新构建整个项目。 - 增强功能:
spring-boot-maven-plugin
还提供了一些其他功能,如生成可执行的脚本文件、运行集成测试、生成项目文档等,以提高开发者的生产力和项目的可维护性。
总之,spring-boot-maven-plugin
是 Spring Boot 开发中一个非常有用的 Maven 插件,它简化了应用程序的打包、运行和部署过程,并提供了一些其他功能,使得开发者能够更轻松地构建和管理 Spring Boot 项目。
3.测试web访问
在springbootstarter包下创建controller包,并创建TestController
@RestController
public class TestController {
@GetMapping("/test")
public String test(){
return "hello";
}
}
在SpringBootStartApplication中找到main方法,并点击运行,观察console
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.6.4)
2024-05-14 18:06:25.211 INFO 7276 --- [ main] c.a.s.SpringBootStartApplication : Starting SpringBootStartApplication using Java 1.8.0_261 on DESKTOP-SQBHU59 with PID 7276 (D:\practise\spring-all\spring-boot-start\target\classes started by aoxiaojun in D:\practise\spring-all)
2024-05-14 18:06:25.213 INFO 7276 --- [ main] c.a.s.SpringBootStartApplication : No active profile set, falling back to 1 default profile: "default"
2024-05-14 18:06:25.746 INFO 7276 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2024-05-14 18:06:25.751 INFO 7276 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2024-05-14 18:06:25.751 INFO 7276 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.58]
2024-05-14 18:06:25.796 INFO 7276 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2024-05-14 18:06:25.797 INFO 7276 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 555 ms
2024-05-14 18:06:26.005 INFO 7276 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2024-05-14 18:06:26.012 INFO 7276 --- [ main] c.a.s.SpringBootStartApplication : Started SpringBootStartApplication in 1.068 seconds (JVM running for 1.887)
看到Spring容器已经启动,并已经启动tomcat容器
,并且默认端口为8080
浏览器访问localhost:8080/test
返回test