【从零搭建SpringBoot3.x 项目脚手架】- 1. 工程初始化

为什么会有这个系列文章

  1. 在项目开发中,大多项目依旧沿用的是 JDK 8 + Spring Boot 2.x 系列的技术栈,没有Spring Boot 3.x 的上手实践机会。
  2. 在个人学习探索 Spring Boot 3.x 的过程中,遇到多数第三方框架集成和问题排查的技术问题,搜索到都是零碎的、没有直接结果的回答,所以以此系列记录在 Spring Boot 3.x项目探索过程,搭建一个 web 项目的基础脚手架,供其他用到类似技术的同学参考。

技术选型

因为项目目前定义为单体且以简单易上手为主,所以采用的技术栈相对通用、易用,有其他需求的同学可留言,在有能力的情况下会进行集成 Demo.

技术栈版本
JDK21
Spring Boot3.2.5
PostgreSQL16
MyBatis Plus(ORM 框架)3.5.7
Redis(外置缓存)7
Redisson (Redis 高级客户端)3.25.0
SaToken(轻量鉴权框架)1.38.0
MapStruct(实体映射工具,非必需)1.5.5.Final

项目初始化

根据个人习惯,用生成器或 IDE 工具初始化项目,或创建 Maven 工程后手动添加依赖。
Spring 官方项目初始化工具 start.spring.io ,阿里云初始化工具 start.aliyun.com,网络环境不佳的同学可选择阿里云工具创建。

Spring 官方初始化工具示例

在这里插入图片描述

阿里云初始化工具示例

阿里云应用脚手架对每一项描述较为清晰,不多复述

在这里插入图片描述

IDE 工具示例(以 IDEA 为例)

在这里插入图片描述

项目结构

不同工具初始化目录结构可能略有差异

├─src
│├─main
│ ├─java
│ │ └─com
│ │   └─bootemp
│ │     └─boot3
│ │       └─Boot3Application.java---- // 项目启动类
│ └─resources
│   └─application.properties--------- // 项目默认配置文件
└─test------------------------------- // 单元测试 
└─pom.xml------------------------------ // Maven 工程文件

项目配置

项目结构规划

合适的项目结构有利于项目后期的维护,不同的项目结构适合不同的开发团队和开发习惯,仅个人习惯。

├─.gitignore
├─docs------------------------------ // 项目文档,如SQL、项目部署文档,UML等
├─pom.xml
└─src
  └─main
    └─java
      └─cn
        └─yiyanc
          ├─common------------------ // 项目通用组件(工具类,常量等)
          ├─config------------------ // 项目配置
          ├─service------------------ // 业务逻辑处理
          ├─infrastructur---------- // 项目基础设施,如ORM、缓存服务、消息队列等基础组件
          ├─MainApplication.java---- // 项目启动类
          └─trigger----------------- // 项目入口
            ├─common
            ├─http------------------ // http请求
            ├─job------------------- // 任务
            └─listener-------------- // 事件监听

依赖版本配置

不同的项目初始化方式,支持、生成的依赖版本各有不同,在进行项目配置前,先统一版本信息。
编辑 pom.xml 文件

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.bootemp</groupId>
    <artifactId>boot3</artifactId>
    <version>0.0.1</version>
    <name>boot3</name>
    <packaging>jar</packaging>
    <description>从零搭建SpringBoot 3.x项目脚手架</description>
    
    <properties>
        <!-- 定义项目基础 -->
        <java.version>21</java.version>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <!-- 定义SpringBoot依赖版本 -->
        <spring-boot.version>3.2.5</spring-boot.version>
        <!-- 定义项目依赖版本 -->
        <mybatis-plus.version>3.5.4.1</mybatis-plus.version>
        <redisson.version>3.25.0</redisson.version>
        <sa-token.version>1.38.0</sa-token.version>
        <hutool.version>5.8.25</hutool.version>
    </properties>
    
    <dependencyManagement>
        <dependencies>
            <!-- 以依赖管理的方式管理SpringBoot依赖版本 -->
            <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.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <build>
        <!-- 指定构建后的Jar包名 -->
        <finalName>app</finalName>
        <plugins>
            <!-- Maven编译配置 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>21</source>
                    <target>21</target>
                    <encoding>UTF-8</encoding>
                    <compilerArgs>
                        <arg>-parameters</arg>
                    </compilerArgs>
                </configuration>
            </plugin>
            <!-- SpringBoot配置 -->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!-- 指定构建时指定启动文件 -->
                    <mainClass>com.bootemp.boot3.MainApplication</mainClass>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

项目参数配置

spring boot 默认配置文件为 application.properties, 个人习惯使用 yml 格式。
配置文件规划:

  • application.yml - 系统通用配置文件,用于引导加载不同环境配置
    • application-local.yml - 本地开发环境配置文件,一般在 .gitignore 添加忽略,避免个人使用习惯“污染”项目配置
    • application-dev.yml - 开发环境配置文件
    • application-prod - 生产环境配置文件
      当前为演示项目,仅配置 application.ymlapplication-local.yml 文件,项目只进行最简配置,对特定参数如数据库连接池参数有要求等,请自行添加。

如环境配置中存在与 application.yml 相同配置会覆盖配置

application. yml
server:  
  port: 8080  
  servlet:  
    context-path: /boot3  
  shutdown: graceful  
  
logging:  
  file:  
    path: ./logs  
  level:  
    com.bootemp: debug  
  
spring:  
  application:  
    name: boot3  
  mvc:  
    pathmatch:  
      matching-strategy: ant_path_matcher  
  main:  
    banner-mode: off
application-local. yml
spring:  
  datasource:  
    # 数据库驱动  
    driver-class-name: org.postgresql.Driver  
    # 数据库连接地址  
    url: jdbc:postgresql://127.0.0.1:5432/boot3  
    # 数据库用户名  
    username: postgres  
    # 数据库密码  
    password: postgres
测试 Controller
package com.bootemp.boot3.trigger.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {

	@GetMapping("/")
	public String hello() {
		return "Hello, SpringBoot 3.2.5!";
	}
}

启动项目,基础配置完成

访问测试接口

在这里插入图片描述

最后项目结构

├─logs
├─pom.xml
└─src
  ├─main
  │ ├─java
  │ │ └─com
  │ │   └─bootemp
  │ │     └─boot3
  │ │       ├─common
  │ │       ├─config
  │ │       ├─infrastructur
  │ │       ├─MainApplication.java
  │ │       ├─service
  │ │       └─trigger
  │ │         ├─controller
  │ │         │ └─HelloController.java
  │ │         ├─job
  │ │         └─listener
  │ └─resources
  │   ├─application-local.yml
  │   └─application.yml
  └─test
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于构建Java应用程序的框架,它提供了许多开箱即用的功能和工具,可以帮助开发者快速创建和管理Spring应用程序。在Spring Boot中,可以使用脚手架项目来快速创建和配置一个基本的Spring Boot应用程序。 以下是一些推荐的好用的Spring Boot脚手架项目: 1. Spring Initializr:Spring Initializr是一个用于创建Spring Boot项目的工具,它提供了一个初始化的模板,可以帮助开发者快速搭建一个基本的Spring Boot应用程序。该工具可以帮助开发者配置所需的依赖项、设置项目的目录结构和模板,以及其他一些常见的设置。 2. Spring Tool Suite(STS):STS是Eclipse平台的一个插件,它提供了Spring框架的开发工具,包括创建和配置Spring Boot项目。STS提供了一个易于使用的界面,可以帮助开发者快速创建脚手架项目,并提供了许多内置的模板和插件,可以帮助开发者快速开发应用程序。 3. JHipster:JHipster是一个开源的代码生成器,它可以帮助开发者快速创建基于Spring Boot和Angular/React的前后端应用程序。JHipster提供了许多内置的模板和插件,可以帮助开发者快速配置和开发应用程序,并且支持多种数据库和云平台。 4. Spring Boot CLI:Spring Boot CLI是一个命令行工具,它可以帮助开发者快速创建和配置Spring Boot应用程序。通过使用Spring Boot CLI,开发者可以使用简单的命令行语法来生成代码、创建配置文件和部署应用程序。 以上是一些常用的Spring Boot脚手架项目,它们都提供了许多开箱即用的功能和工具,可以帮助开发者快速创建和配置一个基本的Spring Boot应用程序。根据开发者的需求和偏好,可以选择适合自己的脚手架项目来创建项目
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值