当前位置: 首页 > news >正文

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项目构建工具

相比传统项目构建工具mavengradle提供了更加简洁且高效的配置方式,在大中型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感兴趣的开发者 阅读时长 预计阅读时长&#xf…...

二叉树:镜像树,子结构,二叉树转链表,二叉树的倒数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)是一种模拟人类智能的科技领域,它通过计算机模拟人类的思维、学习、推理和决策能力,以便解决复杂的问题。近年来,人工智能技术的发展取得了惊人的进展&#xff0c…...

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 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 示例…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 ​…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

vue3 daterange正则踩坑

<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者&#xff1a;来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布&#xff0c;Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明&#xff0c;Elastic 作为 …...