spring boot3.x快速入门

news2024/9/30 1:28:27

下一篇: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
    @Test
    void 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')
}

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RAPTOR模型在长文档知识检索中的应用

人工智能咨询培训老师叶梓 转载标明出处 传统的检索增强型语言模型(RALMs)在检索时往往只关注短且连续的文本块,这限制了它们对整体文档上下文的全面理解。例如,在需要整合文本多个部分知识的主题性问题上,如理解整本书…

哈佛大学单细胞课程|笔记汇总 (六)

哈佛大学单细胞课程|笔记汇总 (五) 哈佛大学单细胞课程|笔记汇总 (四) (六)Single-cell RNA-seq clustering analysis: aligning cells across conditions 我们的数据集包含来自两个不同条件&#xff08…

Java JDK 国内外下载镜像地址及安装

Java JDK 国内下载镜像地址及安装 一、Java JDK 国内下载镜像地址及安装二、国外快速下载jdk 一、Java JDK 国内下载镜像地址及安装 各种JAVA JDK的镜像分发:https://www.injdk.cn/ 华为oracle jdk镜像:https://repo.huaweicloud.com/java/jdk/ 华为op…

python:VOC格式数据集转换为YOLO数据集格式

作者:CSDN _养乐多_ 本文将介绍如何将目标检测中常用的VOC格式数据集转换为YOLO数据集,并进行数据集比例划分,从而方便的进行YOLO目标检测。 如果不想分两步,可以直接看第三节代码。 文章目录 一、将VOC格式数据集转换为YOLO格…

司美格鲁肽,又名索玛鲁肽;Semaglutide;CAS号:910463-68-2

司美格鲁肽,又名索玛鲁肽;Semaglutide; CAS号:910463-68-2 分子量:4113.58 结构图: 司美格鲁肽,又名Semaglutide (上海楚肽生物科技有限提供) 分子式:C187H291N45O59 …

nginx和php工具的使用

一、本地主机通过域名访问自己写的网页 1、开启phpstudy 2、找到phpstudy目录下的www文件夹,创建less01文件夹、index.html、web.php文件,进行配置,如下图: 3、重启一下phpstudy,然后访问网页 4、上面只能通过文件目录…

MIMO系统中差分空间调制解调matlab误码率仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 空间调制原理 4.2 发送端模型 4.3 接收端模型 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完…

打开法学著作的AI新方式:元典问达「知识+」正式上线!

号外!号外! 元典问达正式上新 「知识」 法律人现在可以在「知识」板块,直接与《刑法注释书》、《刑事诉讼法注释书》“对话”,通过提问,获得权威法学出版物总结而成的刑事法律解读和案例分析! 信息爆炸时…

esp32使用数码管显示数字

前言:本文参考视频链接放在最后,同时本文为学习笔记,为了自己好复习。 #数码管概念 现在显示流行有 LCD OLED 但是数码管也能用来作为显示,相对于前两者,数码管稳定价格低廉,到现在也在被应用&#xff0…

UE4材质基础---方形渐变、中心渐变

1、方形渐变 效果图: 代码: 解析:TexCoord的纹理坐标的R通道(0,0.5,1)减0.5> (-0.5,0,0.5)取abs> (0.5,0,0.5)乘…

b站ip地址怎么改到别的城市去

对于B站的忠实用户而言,每当在个人主页、发布动态或评论等,都会注意到IP属地的显示,但在某些情况下,出于对个人隐私的保护、跨越地域限制或其他个性化需求,我们可能会想要改变B站显示的IP地址到另一个城市。那么&#…

有没有值得推荐的加密软件

1. 金刚钻信息数据防泄密系统 特点:专为企业设计,提供全面的信息安全管理功能,支持透明加密技术,确保敏感文件在创建、编辑和保存过程中自动加密,不影响正常办公流程。 功能:提供文档权限管理、数据备份与…

ctfhub Bypass disable_function(完结)

LD_PRELOAD url 蚁剑连接 选择插件 点击开始 查看到此文件名编辑连接拼接到url后面重新连接 点击开启终端 在终端执行命令 ls / /readfile ShellShock url CTFHub 环境实例 | 提示信息 蚁剑连接 写入shell.php <?phpeval($_REQUEST[ant]);putenv("PHP_test() { :…

无心剑七绝《陈梦夺冠》

七绝陈梦夺冠 陈言务去志高扬 梦舞巴黎万里香 夺取天机心气壮 冠轻国重醉千觞 2024年8月8日 平水韵七阳平韵 这首七绝是一首藏头诗&#xff0c;每句的首字连起来是“陈梦夺冠”&#xff0c;表达了对陈梦在巴黎奥运乒乓女单斩获冠军的赞美。 陈言务去志高扬&#xff1a;这句诗意…

【生成式人工智能-五-大模型的修炼-阶段三RLHF】

大模型的修炼-RLHF 增强式学习 大模型修炼阶段Instruct Fine-tune 和 RLHF 的区别和联系 回馈模型 Reward Model增强式学习的难题怎么定义什么是好的&#xff1f;人类也无法判定好坏的 大模型是如何具备人工智能的呢&#xff1f; 上面一篇文章介绍到了前两个阶段&#xff0c;接…

网页 生成桌面快捷应用 manifest.json

效果如图 代码 <link rel"manifest" href"./manifest.json" />// manifest.json {"name": "讨口子","short_name": "TKZ","start_url": "/","display": "standalo…

奔驰GLS450升级迈巴赫四座版内饰 后排电动遮阳帘 后排娱乐案例

多座互联娱乐系统 独乐乐,不如众乐乐。 同级独有的多座互联提乐系统,可令车内所有乘客通过7.0美对中央扶手触控屏与双11.6英寸后排提乐系统缺控屏,随心所欲地分享号航、视频、音频等内容,即便身处后排,您同样也可以享受完M的MBUX智能人都交互体验,直接控制车M的全种功能。 奔驰…

The Otherworld《我独自升级》活动来了!

最近&#xff0c;我们迎来了韩国初创公司 Otherworld&#xff0c;加入 The Sandbox 大家庭。这次合作建立了一个元宇宙网络动漫中心&#xff0c;以 KakaoPage 的热门 IP 为基础&#xff0c;为我们的玩家和创作者在 The Sandbox 中提供多样化的体验。我们将推出一个全新的活动&a…

pikachu: unsafe filedownload(文件下载)

是一个图片下载页面&#xff0c;随便下载一张图片&#xff0c;查看下载链接发现是 http://127.0.0.1:8001/vul/unsafedownload/execdownload.php?filenamekb.png 修改拼接 URL&#xff0c; 构造想要传的的路径来对其进行文件上传 http://127.0.0.1/pikachu-master/vul/unsa…