spring boot3.x快速入门
下一篇:Spring Boot 3.x gradle脚手架工程build.gradle详解
本教程将基于gradle项目构建工具来快速构建一个spring boot 3.x的最简单的web应用,其中涉及各种构建技巧和细节,希望能帮到初学者~

文章目录
- 先决条件
- JDK17
- gradle全局配置
- gradle项目构建工具
- 创建spring boot工程
- 熟悉项目结构和构建方式
- 项目结构
- 项目的配置
- 开发Hello API
- 单元测试
- 服务启动与测试
- gradle打包和运行项目
先决条件
JDK17
参考:JDK17安装与配置
gradle全局配置
参考:gradle全局配置
gradle项目构建工具
相比传统项目构建工具maven,gradle提供了更加简洁且高效的配置方式,在大中型spring微服务项目中得到广泛的使用。在搭建spring boot项目时,spring官方提供的初始化器也推荐使用gradle。一起来看下gradle在本地项目构建所充当的角色吧。

创建spring boot工程
新建一个项目,选择spring初始化器来创建:
位置:E:\juan\springboot\code\001_spring_boot项目搭建\demo


这里我们添加了几个基本的依赖项:
-
Spring Boot DevTools
提供了spring boot服务重启和热加载的开发环境动态更新代码和配置的能力
-
Lombok
简化了开发中对POJO相关代码生成以及日志框架使用时提供隐式日志对象的能力
-
Spring Configuration Processor
提供了根据
@ConfigurationProperties注解生成配置元数据的能力,比如在我们使用.yml配置文件以及做一些自定义配置时,这个依赖项是必须的。 -
Spring Web
用于spring mvc的开发
点创建,项目构建时,如果wrapper方式管理的Gradle软件下载很慢,或者连不上,出现下面情况:


可以修改下,gradle-wrapper.properties
#distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.7-bin.zip
改完后,刷新下gradle。
项目构建成功!

熟悉项目结构和构建方式
项目结构


项目的配置
软件环境的配置由idea集成开发环境以及gradle的wrapper管家帮我们自动完成了。可以看下完成了哪些设置:
-
全局使用的jdk

-
gradle软件设置

-
Java编译器

开发Hello API
package com.juan.demo;import ...// 为简化api开发,索性在启动类上启用rest控制器
@RestController
...
public class DemoApplication {@RequestMapping("hello")public String hello() {return "hello boot3!";}...}
单元测试
package com.juan.demo;import ...import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;@SpringBootTest
// 启用mockMvc自动配置
@AutoConfigureMockMvc
class DemoApplicationTests {...@SneakyThrows@Testvoid hello(@Autowired MockMvc mvc) {mvc.perform(get("/hello")).andExpect(status().isOk()).andExpect(content().string("hello boot3!"));}}
build.gradle中调整依赖
configurations {...// 实现依赖范围配置的局部扩展 testCompileOnly {extendsFrom testAnnotationProcessor}
}...dependencies {...annotationProcessor 'org.projectlombok:lombok'// 为单元测试环境引入和启用lombok编译功能testAnnotationProcessor 'org.projectlombok:lombok'...
}
修改好后,在当前编辑的build.gradle文件右上角会显式一个gradle的小象图标,点击以刷新gradle设置

服务启动与测试
idea会智能的识别项目的启用类,并添加spring boot快捷启动项,当然我们也可以在该界面中点Modify options来设置更多的可选项,比如添加jvm启用的参数等等。

启动本地web服务

用idea提供的http client测试工具进行rest api的测试:


执行单元测试,可以先调整下编译和测试环境由gradle任务构建方式,改为IntelliJ Idea构建方式:

同时,开启注解处理器功能:

运行单元测试:

gradle打包和运行项目
通过命令方式来构建:
./gradlew clean build -x test

或者使用gradle插件提供的命令行:

或者直接双击执行构建目标任务:

运行项目的方式
创建jar-application的启动项

启动jar-application服务,并用http client工具测试hello api。
还可以使用gradle的JavaExec基础任务,编写一个runBootJar
build.gradle
tasks.register('runBootJar', JavaExec) {classpath = files('build/libs/demo-0.0.1-SNAPSHOT.jar')
}

相关文章:
spring boot3.x快速入门
下一篇:Spring Boot 3.x gradle脚手架工程build.gradle详解 本教程将基于gradle项目构建工具来快速构建一个spring boot 3.x的最简单的web应用,其中涉及各种构建技巧和细节,希望能帮到初学者~ 文章目录 先决条件JDK17gradle全局配置 gradle项…...
JavaWeb之servlet关于Ajax实现前后端分离
一、什么是Ajax: AJAX Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。 AJAX 不是新的编程语言,而是一种使用现有标准的新方法。 AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部…...
vue3表格组件formatter
有时候在网页上显示表格数据时,表格的某些列值只有有限数目(例如,启用/停用),这时候后端常常使用不同的数据值表示不同状态,前端怎么将这些数据值转化为相应的列值呢? 我们可以采用vue3表格组件…...
C# 使用NHibernate连接MySQL实现数据的增删改查
使用 NHibernate 连接 MySQL 并实现数据的增删改查操作是一个非常典型的场景。以下是一个简单的示例,演示了如何配置 NHibernate 与 MySQL 连接并进行基本的 CRUD 操作。 目录 步骤 1: 安装必要的包 步骤 2: 配置 NHibernate 配置文件方式 代码方式 步骤 3: 定…...
IDEA2024.2重磅发布,更新完有4G!
JetBrains 今天宣布了其 IDE 家族版本之 2024.2 更新,其亮点是新 UI 现在已是默认设置,并且对 AI Assistant (AI助手)进行了几项改进。 安装密道 新 UI 的设计更加简约,可以根据需要以视觉方式扩展复杂功能。值得开发…...
QWT+Qt Creator+MSVC的配置与使用
目录 一、介绍 二、QWT下载 三、QWT编译 3.1 设置构建套件 3.2 修改QWT相关文件 3.3 进行QWT编译 四、QWT配置 4.1 配置QWT的lib文件 4.2 配置QWT的dll文件 4.3 配置QWT的designer的dll文件 五、代码实验 一、介绍 QWT,全称是Qt Widgets for Technical…...
Netty高性能数据结构
文章目录 Netty高性能数据结构FastThreadLocalHashedWheelTimer时间轮Mpsc无锁队列 Netty高性能数据结构 Netty 用高性能数据结构的主要目的是为了提高网络通信的效率和系统的整体性能。 所谓的高性能数据结构是指,那些在特定场景下优化了性能和效率的数据结构&am…...
关于百度、微软语音合成的实现案例
关键词 自助机产品、排队呼叫功能、网络喇叭、百度语音合成SDK、微软TTS 阅读建议 对自助机产品功能扩展感兴趣的读者、需要实现远程语音呼叫功能的开发者、想要了解网络喇叭选型及其使用的技术人员、对百度语音合成SDK和微软TTS感兴趣的开发者 阅读时长 预计阅读时长…...
二叉树:镜像树,子结构,二叉树转链表,二叉树的倒数K个数,对称,Z型打印
1.把一棵二叉树转换为它的镜像树。 void mirror_tree(TreeNode *root) {if(rootNULL) return ;TreeNode *temproot->right;root->rightroot->left;root->lefttemp;mirror_tree(root->right);mirror_tree(root->left);}2、输入两棵二叉树A,B&…...
瑞秋,詹妮弗·安妮斯顿多年来与本·阿弗莱克保持着“调情”友谊 又一个詹妮弗
尽管所有迹象都表明本阿弗莱克和詹妮弗洛佩兹的婚姻即将走向离婚,但他尚未公开评论此事。不过,好莱坞圈内人士已经纷纷将他与另一位名人联系起来。事实上,是另一位詹妮弗。 一位消息人士向媒体透露,詹妮弗安妮斯顿和阿弗莱克一直都很有默契——无论是在银幕上还是在银幕外…...
指纹失效,忘记iPhone屏幕解锁密码怎么应对?
为保证手机的安全及隐私,我们会给手机设置屏幕锁屏密码,通过输入设置密码来解锁手机屏幕锁,但为了给大家提供快速便捷的解锁方式,苹果公司提供了指纹解锁,不仅解锁更便捷了还极大地增强了设备的安全性。但有时我们手指…...
09.XSS跨站脚本攻击(超详细!!!)
1、什么是XSS XSS(跨站脚本攻击):攻击者利用这个漏洞将恶意脚本注入到网页中,当其它用户浏览这些页面时,恶意脚本会在用户的浏览器中执行。XSS攻击允许攻击者在用户的浏览器上执行脚本,从而可能获取用户的…...
讲解人工智能在现代科技中的应用和未来发展趋势-水文
人工智能(Artificial Intelligence,简称AI)是一种模拟人类智能的科技领域,它通过计算机模拟人类的思维、学习、推理和决策能力,以便解决复杂的问题。近年来,人工智能技术的发展取得了惊人的进展,…...
2.2 QT 环境配置
2.2 QT环境配置 QT是一个1991年由QT Company开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可以用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器&…...
2.类和对象(上)
1. 类的定义 1.1 类定义格式 • class为定义类的关键字,Stack为类的名字,{ }中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; (类和结构体非常像&#…...
【实际案例】服务器宕机情况分析及处理建议
了解银河麒麟操作系统更多全新产品,请点击访问麒麟软件产品专区:https://product.kylinos.cn 服务器环境以及配置 物理机/虚拟机/云/容器 物理机 外网/私有网络/无网络 私有网络 处理器: Kunpeng 920 内存: 4 TiB BIOS版…...
Linux系统之ncdu命令的基本使用
Linux系统之ncdu命令的基本使用 一、ncdu命令命令介绍1.1 ncdu简介1.2 ncdu特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查系统镜像源3.4 更新软件列表 四、安装ncdu工具4.1 安装ncdu软件4.2 n…...
STM32L051K8U6-HAL-LED闪烁设计
HAL三步法: 1、配置下载线 2、配置晶振 3、配置时钟 注意:中断优先级(这里防止HAL_Delay卡死,详细请看 http://t.csdnimg.cn/NQhQV) 4、 配置灯引脚属性为输出模式。并设置标签为LED 生成代码:编写while里…...
记一次远程API调用失败
记一次远程API调用失败 最近开发忙,项目紧,系统出现一些忽隐忽现的问题,本地也不能复现,当时也无法理解,就先搁置了,现在回想起来,这里还是明智的。 这个bug很神奇 今天,原本好好的…...
【力扣】746.使用最小花费爬楼梯
题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 示例…...
终极指南:3分钟上手res-downloader,轻松下载全网视频音频资源
终极指南:3分钟上手res-downloader,轻松下载全网视频音频资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-download…...
TranslucentTB:3分钟让Windows任务栏颜值蜕变的轻量神器
TranslucentTB:3分钟让Windows任务栏颜值蜕变的轻量神器 【免费下载链接】TranslucentTB A lightweight utility that makes the Windows taskbar translucent/transparent. 项目地址: https://gitcode.com/gh_mirrors/tr/TranslucentTB 还在忍受Windows任务…...
HTML函数开发需要多少瓦电源_整机功耗估算指南【说明】
最准方法是用电力功耗仪实测整机交流输入功率;鲁大师靠查表估算易失真;HTML开发真实耗电来自浏览器、框架、开发服务等;选电源须看12V输出能力和80 PLUS认证。怎么看当前整机真实功耗(不是TDP,是插座上真烧的电&#x…...
沉浸式场景英文|小学英语1000词Ⅰ水果篇Ⅰ干词
沉浸式场景英文|小学英语1000词Ⅰ水果篇以下是为小学生整理的高频水果类英语单词,分类清晰,便于记忆:(可一键复制导入「干词」直接沉浸场景背单词!)基础常见水果 apple 苹果 banana 香蕉 orange 橙子 grape…...
基于Matlab/Simulink的直流电机双闭环调速系统参数优化与动态响应分析
1. 直流电机双闭环调速系统基础认知 第一次接触直流电机双闭环调速系统时,我被那一堆专业术语绕得头晕——什么ASR、ACR、转速环电流环,感觉像在听天书。后来在实际项目中摸爬滚打才发现,这套系统本质上就是个"双保险"设计。想象一…...
提升游戏资源管理效率:Steam清单获取的自动化解决方案
提升游戏资源管理效率:Steam清单获取的自动化解决方案 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 你是否曾遇到想要备份Steam游戏却不知从何下手?或者尝试解析游戏文…...
告别暴力搜索!用DiffDock的扩散模型5分钟搞定分子对接,效率提升12倍
5分钟颠覆传统:DiffDock如何用扩散模型重构分子对接效率天花板 在药物研发的漫长链条中,分子对接就像一把精准的钥匙开锁过程——需要找到小分子配体与靶标蛋白最契合的三维结合方式。传统方法如同盲人摸象,耗费数小时在亿万种可能中暴力搜索…...
UnrealPakViewer:虚幻引擎资源分析与Pak文件解析工具指南
UnrealPakViewer:虚幻引擎资源分析与Pak文件解析工具指南 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 作为虚幻引擎开发者࿰…...
避坑指南:Ubuntu 18.04下编译Android 15源码的常见错误及解决方案
Ubuntu 18.04下编译Android 15源码的避坑实战手册 作为一名长期深耕Android系统开发的工程师,我深知在Ubuntu环境下编译AOSP源码的痛点和挑战。特别是当Android版本更新到15.0时,编译环境的兼容性问题、驱动文件的获取方式、以及各种隐藏的配置陷阱&…...
四足机器人步态调参实战:如何用Walk These Ways控制器实现楼梯穿越与抗干扰行走
四足机器人步态调参实战:Walk These Ways控制器在复杂地形中的应用技巧 当Unitree Go1机器人第一次站在楼梯前时,开发者们面临着一个经典困境——如何让这台在平地上表现优异的机器跨越这道障碍。传统解决方案往往需要重新训练模型或调整底层算法&#…...
