SpringBoot(一)之初始化

SpringBoot(一)之初始化


文章目录

SpringBoot框架

Spring Boot 是一个开源的 Java Web 开发框架,它基于 Spring 框架,旨在简化和加快 Spring 应用程序的开发过程。它提供了一种快速构建应用程序的方式,通过自动配置和约定优于配置的原则,让开发者能够更专注于业务逻辑的实现,而不必花费过多时间在繁琐的配置上。

以下是 Spring Boot 的一些主要特点和优势:

  1. 简化配置: Spring Boot 使用约定优于配置的原则,通过自动配置来减少开发者的配置工作。许多常见的配置都会自动完成,开发者只需专注于业务逻辑的编写。
  2. 内嵌服务器: Spring Boot 内置了多种常见的 Web 服务器,如 Tomcat、Jetty 等,使得开发者可以直接在应用中运行,而不需要额外部署独立的服务器。
  3. 依赖管理: Spring Boot 使用 Maven 或 Gradle 进行依赖管理,通过提供一组合适的“starter”依赖,可以很方便地集成常用的框架和库,如 Spring MVC、JPA、Thymeleaf 等。
  4. 监控和管理: Spring Boot 提供了丰富的监控和管理功能,可以轻松集成健康检查、指标监控、日志记录等,方便开发者对应用程序进行监控和管理。
  5. 集成测试: Spring Boot 提供了方便的集成测试支持,可以快速编写和运行集成测试,保证应用程序的质量和稳定性。
  6. 生态系统: 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.xmlresources还有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 项目。

主要功能包括:

  1. 默认配置: spring-boot-starter-parent 定义了一组默认的 Maven 或 Gradle 配置,包括编译器版本、编码规范检查、资源过滤等,让开发者无需重复配置这些基本设置。
  2. 依赖管理: spring-boot-starter-parent 预先定义了一组常用的依赖版本,如 Spring Framework、Spring Boot、Spring Boot Starter、Spring Boot Test 等,开发者只需在项目中引入相应的 Starter 依赖,无需手动指定版本号。
  3. 插件配置: spring-boot-starter-parent 配置了一些常用的 Maven 或 Gradle 插件,如 Spring Boot Maven Plugin、Surefire Plugin、PMD Plugin 等,用于简化项目的构建和管理过程。
  4. 版本管理: 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 模块。

主要功能包括:

  1. Spring MVC: spring-boot-starter-web 包含了 Spring MVC 框架所需的依赖和配置,包括控制器、视图解析器、消息转换器等,使得开发者可以方便地编写和管理控制器,并将请求映射到相应的处理方法。
  2. 嵌入式容器: spring-boot-starter-web 默认使用嵌入式的 Servlet 容器(如 Tomcat、Jetty),因此无需额外配置独立的 Servlet 容器,可以方便地在开发环境中启动和测试应用程序。
  3. 静态资源处理: spring-boot-starter-web 集成了对静态资源(如 HTML、CSS、JavaScript 文件)的处理支持,使得这些资源可以被正确地访问和加载。
  4. 模板引擎: spring-boot-starter-web 支持集成多种模板引擎(如 Thymeleaf、FreeMarker、Velocity 等),开发者可以根据自己的喜好选择合适的模板引擎来生成动态内容。
  5. 数据绑定和验证: spring-boot-starter-web 提供了数据绑定和验证的支持,可以方便地将请求参数绑定到控制器方法的参数中,并进行数据验证和处理。
  6. 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 应用程序中进行单元测试和集成测试。它包含了一系列常用的测试工具和框架,使得开发者可以方便地编写、运行和管理测试用例。

主要功能包括:

  1. JUnit: spring-boot-starter-test 默认集成了 JUnit 测试框架,开发者可以使用 JUnit 编写单元测试和集成测试用例,对应用程序的各个组件进行测试。
  2. Spring Test: spring-boot-starter-test 提供了 Spring Test 框架的集成支持,可以方便地使用 Spring 的上下文加载机制,进行 Spring 应用程序的集成测试。
  3. Spring Boot Test: spring-boot-starter-test 提供了 Spring Boot Test 框架的集成支持,可以方便地编写和运行针对 Spring Boot 应用程序的集成测试,包括对控制器、服务、数据访问层等组件的测试。
  4. Mockito: spring-boot-starter-test 默认集成了 Mockito 框架,用于模拟和测试对象之间的交互关系,使得开发者可以方便地编写和管理 Mock 对象。
  5. Hamcrest: spring-boot-starter-test 默认集成了 Hamcrest 断言库,用于编写更加灵活和易读的断言语句,提高测试代码的可读性和可维护性。
  6. 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 的一些主要功能:

  1. 打包应用程序: spring-boot-maven-plugin 可以将 Spring Boot 应用程序打包成可执行的 JAR 文件或者 WAR 文件,这样可以方便地将应用程序部署到服务器上运行。
  2. 运行应用程序: 通过 spring-boot:run 命令,可以直接在开发环境中运行 Spring Boot 应用程序,而不需要额外安装或配置服务器环境。
  3. 处理资源文件: spring-boot-maven-plugin 可以处理应用程序的资源文件,如静态资源、模板文件等,使得这些文件能够被正确地打包和访问。
  4. 自定义属性: 可以通过插件配置自定义应用程序的属性,如服务器端口号、上下文路径等,从而实现应用程序的灵活配置。
  5. 重新打包: spring-boot:repackage 命令可以重新打包已经存在的 JAR 文件,用于添加或更新应用程序的依赖,而无需手动重新构建整个项目。
  6. 增强功能: 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Shopee、Lazada等平台怎么做测评?

最近有很多人咨询南哥跨境电商平台测评应该怎么做&#xff0c;今天我就针对东南亚站点&#xff0c;详细跟大家分享一下东南亚平台测评需要哪些资源 测评环境系统 不管做任何平台&#xff0c;首先你要有一个稳定的测评环境系统&#xff0c;测评环境系统的底层逻辑就是通过一台…

80%的产品经理被辞退不是因为能力,而是因为…

新手刚入门做产品经理&#xff0c;对产品经理的工作其实也是没有把握&#xff0c;这是对这份工作不够了解&#xff0c;不知道整个工作的流程&#xff0c;所以会感觉“没把握”&#xff0c;结果就是导致焦虑。 如果你硬着头皮做一遍&#xff0c;知道大概是怎么回事&#xff0c;…

Redis过期删除策略和内存淘汰策略有什么区别?

Redis过期删除策略和内存淘汰策略有什么区别&#xff1f; 前言过期删除策略如何设置过期时间&#xff1f;如何判定 key 已过期了&#xff1f;过期删除策略有哪些&#xff1f;Redis 过期删除策略是什么&#xff1f; 内存淘汰策略如何设置 Redis 最大运行内存&#xff1f;Redis 内…

电脑版的学浪课程下载方法

想在你的电脑上无限制地访问你最爱的学浪课程吗&#xff1f;现在&#xff0c;让我揭秘如何用几个简单步骤&#xff0c;轻松下载任何学浪课程到你的电脑&#xff0c;让学习不再受时间和地点的限制&#xff0c;随时随地都是你的课堂。 下载学浪视频的工具&#xff0c;我已经打包…

前端 JS 经典:数组去重万能方法

前言&#xff1a;只需要掌握这一个方法&#xff0c;就可以对有任何重复的数据数组&#xff0c;进行去重了。 可以自己思考下&#xff0c;怎么对以下对象数组去重&#xff1a; const arr [{ a: 1, b: 2 },{ b: 2, a: 1 },{ a: 1, b: 2, c: { a: 1, b: 2 } },{ b: 2, a: 1, c:…

数据中台管理系统原型

数据中台是一个通用性的基础平台&#xff0c;适用于各类行业场景&#xff0c;数据中台包含多元数据汇聚、数据标准化、数据开发、数据共享、数据智能、数据资产管理等功能&#xff0c;助力企业数字化转型。 数据汇聚 数据汇聚是将不同系统、不同类型的多元源数据汇聚至目标数据…

第二十届文博会中芬设计园分会场:发展新质生产力,释放文化创新活力

今年是中国&#xff08;深圳&#xff09;国际文化产业博览交易会&#xff08;以下简称“文博会”&#xff09;创办20周年&#xff0c;二十蝶变再启航&#xff0c;站在新的历史起点上&#xff0c;本届文博会将重点突出数字赋能、强化交易功能、激发和扩大文化消费、弘扬文化传承…

端午佳节,品尝食家巷传统面点与黄米粽子礼盒

端午佳节&#xff0c;品尝食家巷传统面点与黄米粽子礼盒 在这个端午节来临之际&#xff0c;食家巷倾情推出一款别具特色的端午礼盒&#xff0c;将甘肃的传统面点与地方特色黄米粽子完美融合&#xff0c;为您带来一场美味与传统的邂逅。 这款礼盒以甘肃传统面点一窝丝、油饼和烤…

立创EDA绘制PCB电路板

1、绘制好原理图后&#xff0c;点击设计---原理图转PCB&#xff0c;生成PCB文件 2、将元器件拖入电路板方框内&#xff0c;摆放布局并使用工具栏布线、放置过孔及丝印 3、然后顶层和底层铺铜 4、后面就可以生成制板文件发送嘉立创制板了。

干货教程【AI篇】| Topaz Video Enhance AI超好用的视频变清晰变流畅的AI工具,免费本地使用

关注文章底部公众号&#xff0c;回复关键词【tvea】即可获取Topaz Video Enhance AI。 一款非常好用的视频变清晰变流畅的AI工具&#xff0c;即提高视频的分辨率和FPS&#xff0c;亲测效果非常nice&#xff01;&#xff01; 免费&#xff01;免费&#xff01;免费&#xff01…

Google IO 2024有哪些看点呢?

有了 24 小时前 OpenAI 用 GPT-4o 带来的炸场之后&#xff0c;今年的 Google I/O 还未开始&#xff0c;似乎就被架在了一个相当尴尬的地位&#xff0c;即使每个人都知道 Google 将发布足够多的新 AI 内容&#xff0c;但有了 GPT-4o 的珠玉在前&#xff0c;即使是 Google 也不得…

笑铺日记:服装店看这3个数字,就知道赚不赚钱

明明店里每天人来人往&#xff0c;月底一算账&#xff0c;却发现没赚多少钱&#xff1f; 都说要数据分析&#xff0c;但是到底怎么做&#xff1f;这是每个老板都头疼不已的事情。 其实&#xff0c;服装店管好这3个数字&#xff0c;赚钱就不是事儿。 笑铺日记系统&#xff0c…

什么是等保测评?等保测评必须进行吗?

等保测评&#xff0c;全称为信息安全等级保护测评&#xff0c;是指对信息系统安全等级保护状况进行测试评估的活动。它是根据国家信息安全等级保护规范规定&#xff0c;由具有相应资质的测评机构&#xff0c;按照相关管理规范和技术标准进行的&#xff0c;目的是验证信息系统是…

深度学习技术之卷积神经网络

深度学习技术 卷积神经网络1. 导入需要的库2. 加载并显示两张图像2.1 加载图像2.2 创建子图2.3 打印图像形状2.4 打印合并后的图像数组的形状 3. 卷积层3.1 定义变量3.1.1 卷积核的大小&#xff08;u&#xff09;3.1.2 滑动步长&#xff08;s&#xff09;3.1.3 输出特征图的数量…

集成了Gemini的Android Studio,如虎添翼

今天将Android Studio升级到最新版&#xff08;Jellyfish&#xff09;。发现在new features中有一条&#xff1a; Code suggestions with Gemini in Android Studio 打开路径为&#xff1a; View > Tool Windows > Gemini 支持多国语言&#xff0c;英文、中文都能正确理解…

C++显式类型转换

本文主要分析C的4种显式类型转换 文章目录 static_cast基本数据类型转换const用于类层次结构void* dynamic_cast继承中的转换 const_castreinterpret_cast参考资料 我们使用显示类型转换&#xff0c;就是在告诉编译器要怎么解释这块内存。 在早期C/C中&#xff0c;显式的类型转…

Redis-分布式锁实现方式

文章目录 Redis分布式锁的作用&#xff1f;Redis分布式锁的底层原理实现&#xff1f;Redis分布式锁的应用场景&#xff1f;Redis分布式锁遇到相关的场景问题&#xff1f;死锁问题锁超时问题归一问题可重入问题阻塞与非阻塞问题公平锁&#xff08;Fair Lock)公平锁&#xff08;F…

【数据库02】优化、视图、触发器、锁、InnoDB引擎、事务高级

个人学习笔记记录 参考资料&#xff1a;数据库从入门到精通 &#x1f600;SQL优化 &#x1f3b6;insert 主键优化 主键顺序插入的性能是要高于乱序插入的 InnoDB的逻辑结构图 数据行是记录在page中的&#xff0c;而每一个页的大小是固定的&#xff0c;默认16K。 那也就意味…

Franz Electron + React 源码启动运行填坑指南

环境要求 安装miniconda python 环境electron/rebuild用得着&#xff0c;miniconda 默认自带的 python 是 3.11 版本&#xff0c;比较新&#xff1b; 安装virsual studio 2019 要把C桌面相关的都安装了&#xff0c;大概需要20G&#xff0c;不要安装到 C 盘&#xff0c;都安装到…

防静电托盘的用途和性能

防静电托盘主要的用途就是将静电消除&#xff0c;比较广泛的使用在电子的器件以及其在生产的过程中&#xff0c;需要进行转载的周转、运输、贮存和包装等&#xff0c;在行业中我们还可以称之为导静电的托盘&#xff0c;正常情况下防静电托盘的高度为100mm以下&#xff0c;比较适…