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:$PATHsource ~/.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:$PATHsource ~/.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设计和实现的高级工具,它提供了一种结构化和模块化的方式来管理游戏实体的行为。行为树通过树状结构组织了一系列节点,每个节点代表了一个决策或动作。这种结…...
彻底解决机械键盘连击问题:免费开源工具KeyboardChatterBlocker完全指南
彻底解决机械键盘连击问题:免费开源工具KeyboardChatterBlocker完全指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是…...
从0到1构建DeepSeek抗注入能力:97.3%拦截率验证的5层LLM网关架构设计
更多请点击: https://intelliparadigm.com 第一章:从0到1构建DeepSeek抗注入能力:97.3%拦截率验证的5层LLM网关架构设计 为应对Prompt注入、越狱指令与上下文污染等高阶对抗攻击,我们设计并落地了一套轻量级、可插拔的5层LLM网关…...
2025终极指南:Cursor Free VIP破解工具如何帮你免费解锁AI编程助手所有功能
2025终极指南:Cursor Free VIP破解工具如何帮你免费解锁AI编程助手所有功能 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Yo…...
基于LLM与多智能体架构的科研文献检索系统设计与实现
1. 项目概述:当AI遇上科研,一场信息检索的革命如果你是一名科研工作者,或者正在为毕业论文、项目报告而焦头烂额,那你一定对“找文献”这件事深有体会。面对海量的学术数据库,输入关键词,得到成千上万篇论文…...
一滴血预警眼底病变!NFL 全程评估糖尿病视网膜病变
核心结论:本研究通过眼内液与血浆多组学联合分析,证实神经丝轻链(NFL)是可通过血浆微创检测、覆盖糖尿病视网膜病变全病程的保守生物标志物,能有效预测发病及糖尿病血管并发症风险。一、研究概况该研究发表于糖尿病领域…...
zotero-pdf-translate自动翻译失效:5步快速诊断与修复指南
zotero-pdf-translate自动翻译失效:5步快速诊断与修复指南 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode.com/gh_mirr…...
基于DDD与事件驱动的声明处理系统架构设计与实战
1. 项目概述:一个为开发者准备的“索赔”模板仓库最近在GitHub上看到一个挺有意思的项目,叫openclaw-claim-template。光看名字,你可能会有点摸不着头脑:“索赔模板”?这跟开源开发有什么关系?难道是用来写…...
解读民法典基本规定第十条
民法典: 第一编 总则,第一章 基本规定 第十条 处理民事纠纷,应当依照法律;法律没有规定的,可以适用习惯,但是不得违背公序良俗。 一句话核心 先按国法判,国法没写明白,就按当地老规矩、民间习俗…...
Stack-on-a-budget:开发者必备的免费服务资源大全终极指南 [特殊字符]
Stack-on-a-budget:开发者必备的免费服务资源大全终极指南 🚀 【免费下载链接】stack-on-a-budget A collection of services with great free tiers for developers on a budget. Sponsored by Mockoon, the best mock API tool. https://mockoon.com …...
使用Nodejs和Taotoken构建一个多轮对话代理服务
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Node.js和Taotoken构建一个多轮对话代理服务 为全栈或后端开发者设计一个场景,利用Node.js环境下的openai包&#…...
