七、Spring Boot:初识与项目搭建

news2025/2/26 17:54:58

深入解析 Spring Boot:初识与项目搭建

Spring Boot 是基于 Spring Framework 的开源 Java 基础框架,旨在简化 Spring 应用的开发过程。它通过“约定优于配置”的理念,极大地减少了开发中的配置工作,同时提供了“开箱即用”的功能,让开发者能够快速上手。本文将详细介绍 Spring Boot 的目标、如何使用 Spring Initializr 快速生成项目,以及项目的结构和配置文件的使用。


1. Spring Boot 的目标

1.1 简化 Spring 应用开发

Spring Boot 的核心目标是简化 Spring 应用的开发过程,具体体现在以下几个方面:

  1. 减少配置:Spring Boot 通过自动配置(Auto-Configuration)机制,根据项目依赖自动配置 Spring 和相关技术。例如,添加 spring-boot-starter-web 依赖后,Spring Boot 会自动配置 Tomcat 和 Spring MVC。
  2. 独立运行:Spring Boot 应用内嵌了 Tomcat、Jetty 等服务器,无需部署 WAR 文件,可以直接运行。
  3. 简化依赖管理:Spring Boot 提供了“Starters”(启动器),这些启动器封装了常用技术的依赖,开发者只需添加对应的启动器即可。
  4. 生产就绪:Spring Boot 提供了健康检查、指标收集、日志管理等生产级功能,帮助开发者更好地监控和管理应用。

1.2 适用场景

Spring Boot 适用于以下场景:

  • 快速开发:适合需要快速搭建和运行的项目。
  • 微服务架构:适合构建微服务架构,每个微服务可以独立开发和部署。
  • 简化配置:适合希望减少繁琐配置的项目。

2. 使用 Spring Initializr 快速生成项目

Spring Initializr 是一个在线工具,用于快速生成 Spring Boot 项目的骨架代码。它支持多种构建工具(如 Maven 和 Gradle)和多种语言(如 Java、Kotlin 和 Groovy)。

2.1 使用 Spring Initializr 的步骤

  1. 访问 Spring Initializr
    打开 Spring Initializr 网站。

  2. 选择项目配置

    • Project:选择构建工具(Maven 或 Gradle)。
    • Language:选择编程语言(Java、Kotlin 或 Groovy)。
    • Spring Boot Version:选择 Spring Boot 版本。
    • GroupArtifact:填写项目的 GroupId 和 ArtifactId。
    • Dependencies:选择项目需要的依赖(如 Spring Web、Spring Data JPA 等)。
  3. 生成项目
    点击“Generate”按钮,下载生成的项目压缩包。

  4. 解压并导入项目
    解压下载的压缩包,并使用 IDE(如 IntelliJ IDEA 或 Eclipse)导入项目。

2.2 示例:生成一个 Spring Boot Web 项目

假设我们需要生成一个包含 Spring Web 和 Spring Data JPA 的项目,具体步骤如下:

  1. 访问 Spring Initializr

  2. 选择项目配置

    • Project:Maven
    • Language:Java
    • Spring Boot Version:最新稳定版(如 3.1.0)
    • Group:com.example
    • Artifact:demo
    • Dependencies:选择“Spring Web”和“Spring Data JPA”
  3. 生成并下载项目

  4. 解压并导入项目

    • 解压下载的 demo.zip 文件。
    • 使用 IDE 导入项目,例如在 IntelliJ IDEA 中选择“Open”并选择解压后的项目目录。

3. Spring Boot 项目结构

Spring Boot 项目遵循 Maven 或 Gradle 的标准项目结构,以下是典型的项目结构:

demo/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com.example.demo/
│   │   │       ├── DemoApplication.java
│   │   │       └── controller/
│   │   │           └── HelloController.java
│   │   ├── resources/
│   │   │   ├── application.properties
│   │   │   └── static/
│   │   │       └── index.html
│   │   └── test/
│   │       └── java/
│   │           └── com.example.demo/
│   │               └── DemoApplicationTests.java
│   └── test/
│       └── java/
│           └── com.example.demo/
│               └── DemoApplicationTests.java
└── pom.xml

3.1 项目结构说明

  1. src/main/java

    • 存放项目的 Java 源代码。
    • 包含主程序入口类(如 DemoApplication)和业务逻辑代码(如控制器、服务层、数据访问层等)。
  2. src/main/resources

    • 存放项目的资源文件。
    • 包括配置文件(如 application.properties)、静态资源(如 HTML、CSS、JavaScript 文件)和模板文件(如 Thymeleaf 模板)。
  3. src/test/java

    • 存放项目的测试代码。
    • 包括单元测试和集成测试代码。
  4. pom.xml(Maven 项目)或 build.gradle(Gradle 项目):

    • 项目的构建配置文件,定义了项目的依赖、插件和构建生命周期。

4. application.properties 配置文件

application.properties 是 Spring Boot 的核心配置文件,用于配置应用的各种参数,如数据库连接、服务器端口、日志级别等。

4.1 配置示例

配置数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/your_database
spring.datasource.username=your_username
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
配置服务器端口
server.port=8081
配置日志级别
logging.level.root=INFO
logging.level.org.springframework=DEBUG
启用 MyBatis 配置
mybatis.mapper-locations=classpath:mappers/*.xml
mybatis.type-aliases-package=com.example.model

4.2 配置文件的加载顺序

Spring Boot 支持多种配置文件,加载顺序如下:

  1. application.propertiesapplication.yml(位于 src/main/resources)。
  2. 环境变量(如 SPRING_DATASOURCE_URL)。
  3. 命令行参数(如 --server.port=8081)。

5. 第一个 Spring Boot 应用

接下来,我们将通过一个简单的示例来演示如何创建和运行一个 Spring Boot 应用。

5.1 创建项目

使用 Spring Initializr 生成一个包含 Spring Web 的项目,并导入到 IDE 中。

5.2 编写代码

主程序入口类
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
控制器类
package com.example.demo.controller;

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

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, Spring Boot!";
    }
}

5.3 运行应用

运行 DemoApplication 类的 main 方法,启动 Spring Boot 应用。

访问 http://localhost:8080/hello,浏览器将显示:

Hello, Spring Boot!

6. 总结

Spring Boot 通过“约定优于配置”的理念,极大地简化了 Spring 应用的开发过程。通过 Spring Initializr,我们可以快速生成项目骨架代码,而项目的结构和 application.properties 配置文件则为开发者提供了灵活的配置选项。本文通过一个简单的示例演示了如何创建和运行一个 Spring Boot 应用,希望这些内容能帮助你更好地理解和使用 Spring Boot。

如果你对 Spring Boot 有更多问题,或者需要进一步的示例代码,欢迎随时交流!

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

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

相关文章

WEB1~6通杀

##解题思路 这六道题,通杀了,只因为是PHP的特性 来,看web6,过滤最复杂的正则,而且不能解析成大于999的值,但是,php是弱类型的语言,我只要输入任意字符数字,最终值就为0&…

孜然单授权系统V2.0PHP授权系统

孜然单授权V1.0系统,延续了2022年开发的孜然多应用授权系统V2.0 变更:多应用变单系统,去除没用的垃圾代码,从0开发,去除了一些没用的功能 完善了开发文档,之前那套是我写着玩的屎山代码,V1.0将展…

Apache SeaTunnel 构建实时数据同步管道(最新版)

文章作者 王海林 白鲸开源 数据集成引擎研发 Apache SeaTunnel Committer & PMC Member,Apache SkyWalking Committer,多年平台研发经验,目前专注于数据集成领域。 导读 在当今数字化快速发展的时代,数据已然成为企业决策…

服务器离线部署DeepSeek

目标 本次部署的目标是在本地服务器上部署DeepSeek。但是该服务不能连接外网,因此只能使用离线部署的方式。为了一次完成部署。现在云服务器上进行尝试。 云服务器部署尝试 云服务器配置 CentOS72080Ti 11GB 安装准备 1、上传iso并配置为本地yum源 安装前先将…

ComfyUI:Stable Diffusion 及 LoRA、VAE 、ControlNet模型解析

目录 Stable Diffusion流程 扩散过程 去噪过程 checkpoints LoRA LoRA 位置与结构 LoRA 层与原层的关系 LoRA 层的参数拆解 VAE 训练特定 VAE 时更新的参数部分 ControlNet ControlNet 位置与结构 ControlNet 的训练过程 ControlNet 的参数处理与信息融合 Contr…

微信小程序:多菜单栏设计效果

一、实现效果 二、代码 wxml 编辑前端界面,步骤 菜单逻辑: 逐步取出数组中的项,首先取出顶部菜单项,然后选中后取出选中的底部数据(左侧菜单+右侧内容),然后点击左侧菜单取出选中的左侧菜单对应的右侧内容 ①这里我的数据是全部封装到一个数组对象的,首先我的循环…

【Linux Oracle】time命令+oracle exp压缩

Linux && Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.说明 Linux中的time命令:主要用于测量命令的执行时间,并显示该命令在执行过程中所使用的系统资源情况,如CPU时间、内存和…

20分钟 Bash 上手指南

文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号(过滤条件)重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash&#xff0…

【虚拟仪器技术】labview操作指南和虚拟仪器技术习题答案(一)

今天是2025年2月24日,画的是fate/Grand Order里面的阿尔托莉雅.卡斯特,武内老师的画。 目录 第1章 第2章 第3章 第4章 第5章 关注作者了解更多 我的其他CSDN专栏 毕业设计 求职面试 大学英语 过程控制系统 工程测试技术 虚拟仪器技术 可编程…

LabVIEW电能质量分析软件

随着电力系统的复杂性增加,电能质量问题日益突出,传统的电能质量检测装置多采用DSP技术,不仅开发周期长、功能单一,而且在多功能集成方面存在局限性。基于LabVIEW虚拟仪器开发平台的电能质量分析软件利用FFT、STFT、WT、HHT等多种…

视频裂变加群推广分享引流源码

源码介绍 视频裂变加群推广分享引流源码 最近网上很火,很多人都在用,适合引流裂变推广 测试环境:PHP7.4(PHP版本不限制) 第一次访问送五次观看次数,用户达到观看次数后需要分享给好友或者群,好友必须点击推广链接后才会增加观看次…

项目一 - 任务3:搭建Java集成开发环境IntelliJ IDEA

通过本次实战,我们成功搭建了Java集成开发环境IntelliJ IDEA,并完成了多个任务。首先,安装了IntelliJ IDEA并进行了个性化设置,如选择主题、调整字体和编码等。接着,创建了Java项目、包和类,编写并运行了简…

RoCBert:具有多模态对比预训练的健壮中文BERT

摘要 大规模预训练语言模型在自然语言处理(NLP)任务上取得了最新的最优结果(SOTA)。然而,这些模型容易受到对抗攻击的影响,尤其是对于表意文字语言(如中文)。 在本研究中&#xff0…

DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库

项目地址:https://github.com/deepseek-ai/DeepEP 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (2/5)! ​ ​ 引言 在大模型训练中,混合专家模型(Mixture-of-Experts, MoE)因其动…

六十天前端强化训练之第二天CSS选择器与盒模型深度解析

欢迎来到编程星辰海的博客讲解 目录 一、CSS 核心概念 1. 三种引入方式 2. CSS 注释 3. 常见单位系统 二、CSS选择器核心知识 1. 基础选择器类型 2. 组合选择器 3. 伪类选择器(部分示例) 4. 优先级计算规则 三、盒模型深度解析 1. 标准盒模型图…

分享httprunner 结合django实现平台接口自动化方案

说明,可以直接在某个视图集定义自定义接口来验证。 调试1:前端界面直接编写yaml文件. 新增要实现存数据到mysql,同时存文件到testcase下, 如test.yaml 更新yaml数据,同时做到更新 testcase下的文件,如test.yaml acti…

本地大模型编程实战(22)用langchain实现基于SQL数据构建问答系统(1)

使 LLM(大语言模型) 系统能够查询结构化数据与非结构化文本数据在性质上可能不同。后者通常生成可在向量数据库中搜索的文本,而结构化数据的方法通常是让 LLM 编写和执行 DSL(例如 SQL)中的查询。 我们将演练在使用基于 langchain 链 &#x…

速通HTML

目录 HTML基础 1.快捷键 2.标签 HTML进阶 1.列表 a.无序列表 b.有序列表 c.定义列表 2.表格 a.内容 b.合并单元格 3.表单 a.input标签 b.单选框 c.上传文件 4.下拉菜单 5.文本域标签 6.label标签 7.按钮标签 8.无语义的布局标签div与span 9.字符实体 HTML…

博客系统完整开发流程

前言 通过前⾯课程的学习, 我们掌握了Spring框架和MyBatis的基本使用, 并完成了图书管理系统的常规功能开发, 接下来我们系统的从0到1完成⼀个项⽬的开发. 企业开发的流程 1. 需求评审(产品经理(PM)会和运营(想口号),UI,测试,开发等沟通) ,会涉及到背景/目标/怎么做,可能会有多…

【C语言】指针笔试题

前言:上期我们介绍了sizeof与strlen的辨析以及sizeof,strlen相关的一些笔试题,这期我们主要来讲指针运算相关的一些笔试题,以此来巩固我们之前所学的指针运算! 文章目录 一,指针笔试题1,题目一…