Spring Boot入门指南
前言
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。本文将详细介绍 Spring Boot 的基本概念、环境搭建、第一个 Spring Boot 应用的创建、常用注解以及一些最佳实践。
1. Spring Boot 基本概念
1.1 什么是 Spring Boot?
Spring Boot 是一个基于 Spring 框架的快速开发工具,它简化了基于 Spring 的应用开发。Spring Boot 提供了一种开箱即用的配置方式,避免了复杂的 XML 配置,使得开发者可以更快地构建独立的、生产级别的基于 Spring 框架的应用。
1.2 核心特性
- 自动配置:Spring Boot 会根据添加的 jar 依赖自动配置 Spring 应用。
- 起步依赖:Spring Boot 提供了一系列的“起步依赖”(Starter Dependency),简化了 Maven 或 Gradle 的配置。
- 独立运行:Spring Boot 应用内嵌了 Tomcat、Jetty 或 Undertow 服务器,无需部署 WAR 文件。
- 生产就绪:Spring Boot 提供了生产就绪的功能,如性能指标、健康检查和外部化配置。
2. 环境搭建
2.1 开发工具
- IDE:IntelliJ IDEA、Eclipse、Spring Tool Suite (STS)
- Java:JDK 8 或更高版本
- Maven:3.2+ 或 Gradle 4.0+
2.2 安装 JDK
-
下载 JDK: 访问 Oracle 官方网站 或 OpenJDK 官方网站 下载 JDK。
-
安装 JDK: 根据操作系统的不同,选择相应的安装包进行安装。
-
配置环境变量:
- Windows:
- 打开“系统属性” -> “高级” -> “环境变量”。
- 在“系统变量”中新建
JAVA_HOME
,值为 JDK 安装路径。 - 编辑
Path
变量,添加%JAVA_HOME%\bin
。
- Linux: 编辑
~/.bashrc
文件,添加以下内容: Sh深色版本
然后运行export JAVA_HOME=/path/to/jdk export PATH=$JAVA_HOME/bin:$PATH
source ~/.bashrc
使配置生效。
- Windows:
2.3 安装 Maven
-
下载 Maven: 访问 Maven 官方网站 下载 Maven。
-
解压 Maven: 将下载的压缩包解压到指定目录。
-
配置环境变量:
- Windows:
- 打开“系统属性” -> “高级” -> “环境变量”。
- 在“系统变量”中新建
MAVEN_HOME
,值为 Maven 解压路径。 - 编辑
Path
变量,添加%MAVEN_HOME%\bin
。
- Linux: 编辑
~/.bashrc
文件,添加以下内容: Sh深色版本
然后运行export MAVEN_HOME=/path/to/maven export PATH=$MAVEN_HOME/bin:$PATH
source ~/.bashrc
使配置生效。
- Windows:
3. 创建第一个 Spring Boot 应用
3.1 使用 Spring Initializr
-
访问 Spring Initializr: 打开 Spring Initializr。
-
配置项目:
- Project:选择 Maven Project。
- Language:选择 Java。
- Spring Boot:选择最新稳定版本。
- Group:输入项目的 Group ID,例如
com.example
。 - Artifact:输入项目的 Artifact ID,例如
demo
。 - Name:输入项目的名称,例如
demo
。 - Description:输入项目的描述。
- Package Name:输入项目的包名,例如
com.example.demo
。 - Packaging:选择 Jar。
- Java Version:选择 Java 8 或更高版本。
- Dependencies:选择所需的依赖,例如 Spring Web。
-
生成项目: 点击“Generate”按钮,下载生成的项目压缩包,解压到指定目录。
3.2 项目结构
解压后的项目结构如下:
深色版本
demo
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── demo
│ │ │ └── DemoApplication.java
│ │ └── resources
│ │ ├── application.properties
│ │ └── static
│ │ └── templates
└── pom.xml
3.3 编写代码
-
主类:
JavaDemoApplication.java
是项目的入口类,包含main
方法。深色版本
package com.example.demo;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);} }
-
控制器: 创建一个简单的 REST 控制器
JavaHelloController.java
。深色版本
package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController;@RestController public class HelloController {@GetMapping("/hello")public String hello() {return "Hello, Spring Boot!";} }
3.4 运行应用
-
使用 IDE 运行: 在 IDE 中右键点击
DemoApplication.java
,选择“Run”或“Debug”。 -
使用 Maven 运行: 打开终端,导航到项目根目录,运行以下命令:
Sh深色版本
mvn spring-boot:run
-
访问应用: 打开浏览器,访问
http://localhost:8080/hello
,你应该能看到 "Hello, Spring Boot!" 的页面。
4. 常用注解
4.1 核心注解
- @SpringBootApplication:组合注解,包含
@Configuration
、@EnableAutoConfiguration
和@ComponentScan
。 - @Configuration:标记类为配置类。
- @ComponentScan:扫描指定包及其子包下的组件。
- @EnableAutoConfiguration:启用 Spring Boot 的自动配置。
- @RestController:标记类为 REST 控制器。
- @GetMapping:映射 HTTP GET 请求到特定的处理方法。
- @PostMapping:映射 HTTP POST 请求到特定的处理方法。
- @Autowired:自动注入依赖。
4.2 示例
Java
深色版本
package com.example.demo.service;import org.springframework.stereotype.Service;@Service
public class HelloService {public String sayHello() {return "Hello, Service!";}
}
Java
深色版本
package com.example.demo.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Autowiredprivate HelloService helloService;@GetMapping("/hello")public String hello() {return helloService.sayHello();}
}
5. 最佳实践
5.1 分层架构
- Controller:处理 HTTP 请求。
- Service:处理业务逻辑。
- Repository:处理数据持久化。
5.2 配置管理
- application.properties:配置应用的基本属性。
- application.yml:配置应用的基本属性,支持 YAML 格式。
5.3 日志管理
- logback-spring.xml:配置日志输出格式和级别。
5.4 安全管理
- Spring Security:集成 Spring Security 进行安全控制。
5.5 测试
- 单元测试:使用 JUnit 和 Mockito 进行单元测试。
- 集成测试:使用 Spring Boot Test 进行集成测试。
6. 总结
通过本文,我们详细介绍了 Spring Boot 的基本概念、环境搭建、第一个 Spring Boot 应用的创建、常用注解以及一些最佳实践。Spring Boot 的强大之处在于它能够简化 Spring 应用的开发,使得开发者可以更快地构建独立的、生产级别的应用。希望本文对你理解和使用 Spring Boot 有所帮助。
相关文章:
Spring Boot入门指南
前言 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。本文将详细介绍 Spring Boot 的基本概念、环境搭建、第一…...
MYSQL(学习笔记)
<div>深分页怎么优化?</div> <div>还是以上面的SQL为空:select * from xxx order by id limit 500000, 10;</div> <div>方法一:</div> <div>从上面的分析可以看出,当offset非常大时&am…...

学校周赛(1)
A - Short Sort 题目: 思路: 本条题目只允许改一处地方,只有三个字母,我们可以直接枚举所有移动过的结果,同时使用哈希去记录其值,对于每一个输入我们都寻找是否有这个值记录,有则输出YES否则…...

人生苦短,我用Python✌
面向代码的解释型语言 数据开发和AI 编程语言:让计算机了解我们干什么,翻译官 1.下载软件 解释器安装 点击第二个 改路径 D:\python 安装 测试 winr打开 输入代码 输出 退出环境 exit() 新建文本文档后缀改成py 编写 运行 安装编写代码…...
uniapp js判断key是否在json中?
推荐学习文档 golang应用级os框架,欢迎stargolang应用级os框架使用案例,欢迎star案例:基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识,这里有免费的golang学习笔…...
Codeforces Round 975 (Div. 2) C. Cards Partition
题目链接:题目 大意: 给出若干种卡片,每种卡片有一定数量,你可以加入不超过 k k k张任意已给出种类的卡片,使得它们可以被分成若干组,每组容量一定,且同组内不存在相同种类的卡片,…...

Qt 首次配置 Qt Creator 14.01 for Python
前言: 如何用QT实现Python的配置的交互界面。本文从0开始,进行实践的介绍。 在上一节里面,我们做了社区版本的配置: https://blog.csdn.net/yellow_hill/article/details/142597007?spm1001.2014.3001.5501 这一节࿰…...
【python】代码发布前检查- vulture:查找死代码
分析Python项目中未被使用的.py文件 Vulture: Vulture是一个专门用于查找Python代码中的死代码的工具。它可以识别未使用的代码,包括未导入的模块。 安装: pip install vulture使用: vulture your_project_directory...

Yolov10环境配置
参考文章:1.YOLOv10超详细环境搭建以及模型训练(GPU版本)-CSDN博客 2.Windows下安装pytorch教程(下载.whl的方式)_pytorch whl-CSDN博客 安装步骤和文件夹顺序一样 1.安装CUDA和cuDNN 1.1安装CUDA 1.1.1查看当前你的电脑显卡支持的最高CUD…...
iOS 提取图片的主题色,并支持灵活提取
遇到一个需求,要提取图片中的色调,但还有一点特殊的需求,就是不是提取颜色最多的色调,也不是平均的色调,是图片中偏暗的色调 这就需要我们动态的调整我们提取的算法, 下面就看代码 dispatch_async(dispatch…...
语雀笔记使用记录
初识语雀 语雀官网 语雀帮助 教你如何使用语雀提高效率 语雀极简使用指南 | 10个常用技巧,带你快速入门 语雀安装 语雀下载地址 根据自己的pc平台下载对应的版本,然后傻瓜式安装即可 初试语雀 语雀为云笔记,并且其特性比较符合我个人的需求…...

安全教育培训小程序系统开发制作方案
安全教育培训小程序系统是为了提高公众的安全意识,普及安全知识,通过微信小程序的方式提供安全教育培训服务,帮助用户了解并掌握必要的安全防范措施。 一、目标用户 企业员工:各岗位员工,特别是IT部门、财务、行政等对…...

【面试题】软件测试实习(含答案)
软件测试实习常见面试题,主要是功能测试相关的基础问题 目录 一、软件测试基础 1、介绍一下你最近的项目,以及工作职责 2、软件项目的测试流程? 3、黑盒测试与白盒测试的区别? 4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法 1&…...

后端回写前端日期格式化
问题 不进行格式化处理,就会导致传递的字符串很奇怪 解决方案 注解(字段) <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</…...
微信小程序开发系列之-在微信小程序中使用云开发
微信小程序开发系列之-在微信小程序中使用云开发 随着微信小程序的快速发展,云开发成为了一个强大的工具,它提供了无需搭建和维护服务器的便捷环境。云开发允许开发者直接使用云数据库、存储和云函数等服务,大大简化了小程序的开发流程。在本…...

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024
《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024 前言简介任务定义模型架构Encoding Dialogue InformationCapturing Associated InformationPredicting Emotion and Generating Response损失函数问题前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦…...
零基础教你如何开发webman应用插件
0X03 应用目录机构 plugin/ └── dingdingtalk │ ├── api │ │ └── Install.php │ ├── app │ │ ├── controller │ │ │ └── IndexController.php │ │ ├── functions.php │ │ ├── middleware │ │ ├── mo…...

AVL树(平衡二叉树)的介绍以及相关构建
欢迎光临 : 羑悻的小杀马特-CSDN博客 目录 一AVL树的介绍: 二AVL树的实现: 1结构框架: 2节点的插入: 旋转: 21左单旋: 2.1.1左单旋介绍及步骤: 2.1.2左单旋代码实…...
SAP员工士气因重组受到打击
SAP在2024年经历了员工士气显著下降的局面,特别是在国内员工中。这一变化与公司在1月宣布的重组计划紧密相关。根据彭博社的报道,6月进行的一项调查显示,SAP约16,500名员工中,有51%愿意接受竞争对手的类似职位,而对公司…...
Unity3D 中构建行为树插件详解
前言 在Unity3D中,行为树(Behavior Tree)是一种用于游戏AI设计和实现的高级工具,它提供了一种结构化和模块化的方式来管理游戏实体的行为。行为树通过树状结构组织了一系列节点,每个节点代表了一个决策或动作。这种结…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

Mysql故障排插与环境优化
前置知识点 最上层是一些客户端和连接服务,包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念,为通过安全认证接入的客户端提供线程。同样在该层上可…...
window 显示驱动开发-如何查询视频处理功能(三)
D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针,该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...
Electron简介(附电子书学习资料)
一、什么是Electron? Electron 是一个由 GitHub 开发的 开源框架,允许开发者使用 Web技术(HTML、CSS、JavaScript) 构建跨平台的桌面应用程序(Windows、macOS、Linux)。它将 Chromium浏览器内核 和 Node.j…...

【动态规划】B4336 [中山市赛 2023] 永别|普及+
B4336 [中山市赛 2023] 永别 题目描述 你做了一个梦,梦里有一个字符串,这个字符串无论正着读还是倒着读都是一样的,例如: a b c b a \tt abcba abcba 就符合这个条件。 但是你醒来时不记得梦中的字符串是什么,只记得…...