03. SpringBoot 项目创建

news2024/9/29 23:34:33

接下来我们将要完成一个基础的 Springboot 项目的创建,并且将项目上传到 Gitee

1. 查看官网,选择版本

学习任何一门技术,一定要学会从官网了解一手信息,无论是哪个博主的博客都是有时效性的,我们要掌握这样的习惯,看懂看不懂另说,起码知道从哪里去找。
spring官网地址:https://spring.io/

image.png

可以看到截至 2024.8.8 号,当前发布的最新稳定 GA 版本为 3.3.3,但是这里我不选择最新版本,原因是后续可能会改造成微服务项目,当前 SpringCloud Alibaba 适配的最新SpringBoot版本才到3.2.4,这里可以查看 https://sca.aliyun.com/docs/2023/overview/version-explain/,所以我这里选择3.2.4

版本说明:

这里简单介绍一下各个版本后面的版本号,以及 GA 代表什么意思。
大多数软件在开发过程中都会有一个生命周期,从开发到测试,最后到上线,以及后续的维护。

  1. 开发阶段:Development 开发阶段,一般不对外暴露
  2. Alpha:Alpha 内测阶段,通常包含了基础功能,但是可能存在很多已知的问题,需要解决,一般供团队内成员使用。
  3. Beta: Beta 相对稳定的版本,一般为已经完成大部分功能,并且经过了一定程度的测试,一般会公开给外部测试人员或者志愿者使用,收集一些反馈
  4. Release Candidate: RC 候选发布版本,最近就正式版本的一个版本,如果没有大问题基本确定可以作为正式版本发布。会在内部或者选定的小范围内进行测试,确保最终是否符合上线标准。
  5. General Availbility: GA 这就是我们上面提到的 GA版本或者有的也定义为 Final版本,是正式发布的版本,意味着软件已经通过所有测试,并且认为足够稳定,可以提供给所有用户使用了。
  6. Maintenance: 发布 GA 版本后,可能会有若干个小版本来修复发现的一些小错误,这些版本通常被称为点版本(例如 1.0.1,1.0.2 等)。
  7. Path: Patch 版本用于修复紧急安全漏洞或者其他严重问题,一般比较少见
  8. Snapshot: Snapshot 版本指的是正式版某个版本的一个快照版本,这些版本通常包含了最新的更改和特性,但也可能不稳定
  9. End of Life :EOL 当软件不再受到支持,会宣布其生命终结,这意味着将不再维护更新。

一般版本号都是由三位数字组成,<major>.<minor>.<patch>

  • Major (主版本): 当做出不兼容的 API 修改时增加此数字。
  • Minor (次版本): 当添加向后兼容的功能时增加此数字。
  • Patch (修订版本): 当修复向后兼容的 bug 时增加此数字。

2. 创建项目

这里我选择使用 3.2.4 作为最终版本, 当然你也可以选择当前最新的,对于当前的单体项目来说,几乎没有任何区别。这里点击 3.2.x 版本的文档 https://docs.spring.io/spring-boot/docs/3.2.9/reference/html/getting-started.html#getting-started

可以看到这里对于一些版本的说明,最低要求 JDK17 Maven 3.6.3 +
image.png
接下来我们可以大致浏览一下,其实官网的文档写的很详细,有教你怎么下载 maven如何创建一个 SpringBoot项目,运行,打包等等。而且介绍了各个环境下的不同安装方式。这里我基于 IntelliJ IDEA给大家演示快速创建一个 SpringBoot项目。

2.1. 项目介绍

先简单介绍一下我们的项目组织结构,这个在我过去开发中碰到过很多种,各有各的特色,大致有以下几种。

第一种:单体架构,不拆分模块
image.png

这种方式的优势就在于,简单快速,适合一些比较简单的小项目。

第二种:单体项目,进行模块划分
image.png

根据业务模块进行抽离,将不同职责的业务,划分进不同的模块中,相比于前一种,相当于把原先通过文件夹划分职责改成了,通过模块划分,这样做的好处就是,项目结构更清晰了,可以做到更进一步的控制,比如不同模块使用特定的版本等,但是项目的复杂度也一定程度上增加了。这种方式切换为微服务版本时,改动起来会更加方便一点。

这里我会选择第二种方式完成项目开发,其实选择每种方式都可以,没有好坏之分,适合自己的就是好的。我刚开始写项目的时候也经常会纠结这些细枝末节的东西,比如项目名称怎么命名,变量怎么命名,mvc怎么分层,包怎么划分,后来发现这些除了给你带来毫无意义的内耗意外,对项目没有任何影响,只会拖慢你的项目进度,以及打击你的热情。所以,大家一定要知道什么才是重点,先把项目搭起来,业务跑起来,所有的这些细节可以在后续优化中一点点改进,有些东西等到你用到的时候,自然会发现怎么样去设计会更合适,更有利于自己完成项目的开发。

项目结构大致如下

image.png

2.2. 新建项目

打开 idea找到 【New Project】

image.png

如果你的打开的时候不是这个界面,可以在这里创建新项目

image.png

之后就都是一样的了。

填好必要的信息,点击 【Create】

image.png

创建完成后,我们得到这样一个项目

image.png

这个将作为我们的根目录,也就是父依赖,将 src删除掉,留下pom用来管理依赖的版本。

修改 pom.xml添加官方提供的 springboot-start依赖,之后使用官方整合的包的时候将不用再指定版本,这样做的好处就是不容易出现版本冲突的问题。将自动生成的版本改成 1.0.0-DEV,当然你也可以不改,只是个人习惯,没任何影响。
这里在父工程里还引用了 lombok的依赖,这样后续所有模块将会自动继承引用。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zz</groupId>
    <artifactId>zz-admin-springboot</artifactId>
    <version>1.0.0-DEV</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring-boot.version>3.2.4</spring-boot.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>

创建业务模块 【选择文件夹>New>Module

image.png

填好必要信息,点击【Create

image.png

如果你通过这种方式创建,你会发现,父 pom 里自动生成了模块声明

image.png

按照相同方式创建出 zz-module 这个是用来存放业务模块的。删除 src,这个也是个父工程,在下面创建具体的业务模块 zz-admin

最终项目结构如下

image.png

你可能会有疑问,为什么这里要再弄一个 zz-module,为什么不直接将 zz-admin放在外面同zz-common同级,你的想法是对的,那样确实可以,而且结构更加简单明了,我这么做是因为,我希望将所有核心业务放在一个路径下管理,并且可以集中引用一些公共依赖。正如我前面提的,没有好坏适合自己的最好。

2.3. 引入web开发依赖

zz-adminpom里,引入web依赖

<dependencies>
  <!-- web 依赖-->
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>

创建启动类

@SpringBootApplication
public class ZZAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZZAdminApplication.class, args);
    }
}

创建 application.yaml

server:
  port: 8000

运行项目,可以看到,符合预期,在 8000 端口运行起来了

image.png

到这里,我们的项目算是初始化完成了。

3. 提交代码到码云,方便管理

方便代码维护管理,将代码上次至码云。

码云地址:https://gitee.com
注册账号,登录上去。
新增仓库
image.png
填好仓库名称
勾选分支模型,其它什么都别选,这样能保证我们的仓库最干净,不然会生成一些其它文件。
image.png
然后你会看到这样的界面
image.png
找到项目根目录,进入 git bash
image.png
按顺序执行以下命令

git config --global user.name "曹申阳"
git config --global user.email "1xxxxx@163.com"
git init
git add .
git commit -m "项目初始化"
git remote add origin https://gitee.com/xxxxx
git push -u origin "master"

这个时候刷新一下 gitee页面,即可看到提交记录了。
image.png
根据提示,你也可以添加一下自己的开源许可协议。通过网站直接添加,注意本地要拉取一下提交的协议。

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

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

相关文章

Runtime Asset Database 运行时资产数据库

运行时资产数据库是一个库,旨在简化Unity应用程序中运行时保存和加载子系统的实现。此库复制并扩展了Unity编辑器中常见的预制件、预制件变体和资源的概念,使其在运行时比以往任何时候都更容易管理和操纵游戏资源,并在运行时动态实现与Unity编辑器类似的工作流。 Unity开发人…

晟鑫商会与家盛资本携手合作,共创金融科技新篇章

在数字化浪潮的推动下,金融科技正成为全球经济发展的新引擎。近日,晟鑫商会与家盛资本宣布达成战略合作伙伴关系,旨在通过创新合作,共同开拓市场新机遇,促进双方在数字经济领域的深入发展。两家机构的联合预示着在金融科技领域将开启一段新的旅程。 晟鑫商会,作为互联网商业合作…

做好价格监测这些点要注意

品牌在进行数据监测时&#xff0c;首要关注点在于数据本身的准确率与覆盖率&#xff0c;而在价格监测方面亦是如此。品牌需高度关注电商价格监测系统输出的价格、促销信息、销量等数据。一旦促销信息出现不准确的情况&#xff0c;到手价必然会受到影响&#xff0c;进而对后端治…

USB PHY——ULPI

ULPI协议的全称是UTMI Low Pin Interface。从名字上就可以看出ULPI是UTMI的Low Pin版本。 ULPI是在UTMI的基础上封装了一层。 ULPI需要读写寄存器&#xff0c;而UTMI只需直接拉高或拉低信号线。 从这张图可以看出 ULPI 是在 UTMI level3 再往上一层 外设参考设计

ssm面向企事业单位的项目申报小程序论文源码调试讲解

2 系统实现的技术支持 2.1微信开发者工具 在传统web浏览器中&#xff0c;在加载htm15页面时先加载视图层的html和css&#xff0c;后加载逻辑层的java script&#xff0c;然后返回数据并在浏览器中展示页面。而微信开发者工具的系统层是基于Native System的&#xff0c;视图层和…

COMP9315-week2-lecture1

COMP9315 19T2 Week 2 Lecture 1_哔哩哔哩_bilibili C:\python\COMP9315-master\19T2\Lectures\weel02.pdf COMP9315 24T1 - Course Notes (unsw.edu.au) 前面三分之一时间讲week1的练习题&#xff0c;是一个存储过程 COMP9315-master\19T2\Lecture Exercises\week01\ex05\…

AcWing859. Kruskal算法求最小生成树

一定要看这个链接的讲解视频&#xff1a;强烈推荐&#xff01;&#xff01;&#xff01;【图-最小生成树-Prim(普里姆)算法和Kruskal(克鲁斯卡尔)算法】 文章目录 1.题目2.Kruskal基本思想&#xff1a;3.逐行解释代码&#xff1a; 1.题目 2.Kruskal基本思想&#xff1a; Krus…

sql-labs46-50通关攻略

第46关 一.查询数据库 http://172.16.1.142/Less-46/?sort1%20and%20updatexml(1,concat(0x7e,(select%20database()),0x7e),1)--http://172.16.1.142/Less-46/?sort1%20and%20updatexml(1,concat(0x7e,(select%20database()),0x7e),1)-- 二.查表 http://172.16.1.142/Les…

Eureka:Spring Cloud中的服务注册与发现如何实现?

Eureka&#xff1a;Spring Cloud中的服务注册与发现如何实现&#xff1f; 1、什么是服务注册与发现&#xff1f;2、Eureka的工作原理3、Eureka的优势 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在微服务架构的浪潮中&#xff0c;服务注…

谷歌的 GameNGen:无需游戏引擎,人工智能模拟 “毁灭战士“,开辟新天地

谷歌公司的研究人员创建了一个神经网络&#xff0c;可以在不使用传统游戏引擎的情况下生成经典射击游戏《毁灭战士》的实时游戏&#xff0c;从而实现了人工智能领域的一个重要里程碑。这个名为 GameNGen 的系统标志着人工智能向前迈出了重要一步&#xff0c;它能在单芯片上以每…

ffmpeg教程及加速视频转码

ffmpeg教程及加速视频转码 1、ffmpeg简介&#xff1a; ffmpeg来自MPEG视频编码标准。 是一套可以用来记录&#xff0c;转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。 可以轻易的实现多种视频格式之间的相互转换。 2、基础知识&#xff1a; 容器、文件…

2d像素游戏基本架构

目录 2D像素游戏的基本架构通常包括以下几个关键部分 Unity和虚幻引擎在2D游戏开发中的性能比较 Unity的2D工具设计复杂的地图和场景 创建和管理地图资源&#xff1a; 使用TileMap工具&#xff1a; 构建复杂场景&#xff1a; 添加碰撞体和物理效果&#xff1a; 优化和…

密码访问单页自定义跳转页面源码

源码介绍 密码访问单页自定义跳转页面源码&#xff0c;密码访问单页自定义跳转页面&#xff0c;修改了的密码访问单页&#xff0c;添加了js自定义密码跳转页面。需要正确输入密码才能跳转目标网址。 源码截图 源码下载 密码访问单页自定义跳转页面源码

区分wps还是office创建的文档,word、ppt和excel

手动区分 文档->右键->属性 代码实现 namespace WpsAndOfficeDifferent {internal class Program{static void Main(string[] args){string root System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase ?? "";#region 区分office和wps创建…

SELF-INSTRUCT: Aligning Language Modelswith Self-Generated Instructions 学习

指令微调就是要训练模型执行用户的要求的能力。 文章首先说“指令微调”数据集经常是人工生成&#xff0c;有数量少等缺点。文章提供了一个让语言模型自己生成指令微调数据&#xff0c;自己学习的方法。首先会让一个语言模型自己生成要求&#xff0c;输入和输出&#xff0c;然…

【SpringBoot】电脑商城-09-默认收获地址和删除收货地址

默认收货地址 1 默认收货地址-持久层 1.1 规划需要执行的SQL语句 1.将某用户的所有收货地址设置为非默认地址&#xff08;是否默认&#xff1a;0-不默认&#xff0c;1-默认&#xff09;。 update t_address set is_default0 where uid?2.将某用户指定的收货地址设置为默认…

108页PPT分享:华为流程体系及实施方法最佳实践

PPT下载链接见文末~ 华为的流程体系、流程框架及实施方法是一个复杂而精细的系统&#xff0c;旨在确保公司运作的高效性和竞争力。以下是对这些方面的详细描述&#xff1a; 一、华为的流程体系 华为的流程体系是一套全面的管理体系&#xff0c;它涵盖了企业所有的活动&#…

玩转云服务:Oracle Cloud甲骨文永久免费云主机配置指南(续)

前段时间&#xff0c;和大家分享了白嫖Oracle Cloud的云服务器&#xff1a; 玩转云服务&#xff1a;Oracle Cloud甲骨文永久免费云服务器注册及配置指南。 新注册的小伙伴&#xff0c;可以在 30 天内&#xff0c;利用 300 美元免费储值&#xff0c;任性使用所有 Oracle Cloud …

【unity实战】使用新版输入系统Input System+Rigidbody实现第三人称人物控制器

最终效果 前言 使用CharacterController实现3d角色控制器&#xff0c;之前已经做过很多了&#xff1a; 【unity小技巧】unity最完美的CharacterController 3d角色控制器&#xff0c;实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果&#xff0c;复制粘贴即用 【unity实战】C…

InternLM2.5 部署到安卓手机上

环境准备 1.1 安装rust export RUSTUP_DIST_SERVERhttps://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOThttps://mirrors.ustc.edu.cn/rust-static/rustup curl --proto https --tlsv1.2 -sSf https://mirrors.ustc.edu.cn/misc/rustup-install.sh | sh1.2 安…