Spring Boot 应用开发:入门与实战

news2024/11/26 10:25:58

Spring Boot 应用开发:入门与实战

引言

Spring Boot 是 Spring 框架的一个子项目,旨在简化 Spring 应用的配置和开发。它通过自动配置和嵌入式服务器,极大地简化了 Java 企业级应用的开发。本文将详细介绍 Spring Boot 的核心概念,并通过一个简单的 Web 应用来演示如何从零开始构建一个 Spring Boot 项目。
在这里插入图片描述

1. 什么是 Spring Boot?

Spring Boot 是基于 Spring 框架的快速应用开发工具,旨在简化 Spring 应用的配置。其主要目标是提供一个能让开发者专注于业务代码,而无需过多关心底层配置和依赖管理的框架。Spring Boot 具有以下特点:

  • 自动配置:根据项目依赖自动配置 Spring 应用的默认设置。
  • 嵌入式服务器:内置如 Tomcat、Jetty 等应用服务器,无需单独部署。
  • 简化的 Maven/Gradle 构建:通过 spring-boot-starter,减少手动添加依赖的复杂度。
  • 生产就绪特性:内置监控、健康检查和应用度量。
    在这里插入图片描述

2. Spring Boot 项目结构

Spring Boot 项目的典型结构如下:

src
 └── main
     ├── java
     │   └── com.example.demo
     │       ├── DemoApplication.java
     │       └── controller
     │           └── HelloController.java
     └── resources
         ├── application.properties
         └── templates
             └── index.html
  • src/main/java:存放 Java 源代码。
  • src/main/resources:存放配置文件和静态资源,如 application.properties、HTML 模板等。
    在这里插入图片描述

3. 搭建 Spring Boot 应用

我们将构建一个简单的 Spring Boot 应用,通过 Maven 或 Gradle 构建工具生成项目骨架。这里我们以 Maven 为例。

3.1 创建 Maven 项目

可以使用 Spring Initializr 快速创建 Spring Boot 项目,访问 https://start.spring.io/,选择如下设置:

  • Project:Maven
  • Language:Java
  • Spring Boot Version:2.7.0 或最新版本
  • Dependencies:Spring Web

点击生成项目后,将下载一个压缩包,解压并导入到 IDE(如 IntelliJ IDEA)。

3.2 配置 pom.xml

项目的 pom.xml 文件负责管理依赖。在生成的项目中,你会发现 Spring Boot 相关的依赖已经添加好:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.0</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <!-- Spring Boot Web Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

spring-boot-starter-web 是一个包含了所有 Web 开发所需依赖的包,如 Tomcat、Spring MVC 等。

3.3 编写主类

DemoApplication.java 是项目的主入口,它使用了 @SpringBootApplication 注解,标识这是一个 Spring Boot 应用。

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);
    }
}

@SpringBootApplication 是一个组合注解,包含了以下三个重要注解:

  • @Configuration:允许在类中定义 Spring Bean。
  • @EnableAutoConfiguration:启用 Spring Boot 的自动配置功能。
  • @ComponentScan:启用组件扫描,自动检测并注册 Spring Beans。

3.4 编写控制器

Spring Boot 提供了强大的 MVC 框架支持。接下来我们创建一个简单的 RESTful 控制器,返回一条欢迎信息。

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!";
    }
}

在上面的代码中:

  • @RestController 是一个组合注解,包含了 @Controller@ResponseBody,用于处理 RESTful 请求。
  • @GetMapping("/hello") 绑定了 /hello 路径的 GET 请求到 hello() 方法。

3.5 运行应用

通过 IDE 或在命令行执行以下命令,启动 Spring Boot 应用:

mvn spring-boot:run

应用启动后,访问 http://localhost:8080/hello,你将看到:

Hello, Spring Boot!

3.6 自定义配置

Spring Boot 提供了一个强大的配置系统,默认使用 application.propertiesapplication.yml 来管理应用配置。我们可以通过修改 src/main/resources/application.properties 来自定义端口和其他设置。

例如,修改服务器端口为 9090:

server.port=9090

保存后,重新启动应用,访问 http://localhost:9090/hello,效果依旧。
在这里插入图片描述

4. 常见功能扩展

Spring Boot 提供了大量的自动配置模块,常见功能可以通过添加依赖和简单配置来实现。

4.1 数据库集成

Spring Boot 提供了对多种数据库的支持。以 MySQL 为例,首先在 pom.xml 中添加 MySQL 依赖:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

然后,在 application.properties 中配置数据库连接:

spring.datasource.url=jdbc:mysql://localhost:3306/demo
spring.datasource.username=root
spring.datasource.password=yourpassword

接下来,我们可以使用 @Entity 注解定义数据库实体,并使用 JpaRepository 进行 CRUD 操作。

4.2 安全模块集成

Spring Boot 还提供了 Spring Security 的集成。要添加安全模块,只需在 pom.xml 中添加如下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

Spring Security 默认会为所有请求添加 HTTP Basic 认证。可以通过配置文件或 Java 代码进行进一步定制。
在这里插入图片描述

5. 结论

Spring Boot 极大地简化了基于 Spring 框架的应用开发,尤其适合快速原型和生产环境的构建。通过自动配置、嵌入式服务器和简化的依赖管理,开发者可以将更多精力集中于业务逻辑的开发。本篇文章展示了如何从头开始构建一个简单的 Spring Boot 应用,并演示了如何扩展项目功能,如数据库集成和安全模块。

示例代码仓库

你可以在 GitHub 示例代码 查看本文所提到的完整代码。

希望通过本篇教程,能够帮助你快速掌握 Spring Boot 应用开发的基础。如果你想深入学习 Spring Boot,可以继续探索其丰富的生态系统和高级功能。
在这里插入图片描述

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

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

相关文章

linux 搭建sentinel

1.下载 linux执行下面的命令下载包 wget https://github.com/alibaba/Sentinel/releases/download/1.8.6/sentinel-dashboard-1.8.6.jar2.启动 nohup java -Dserver.port9090 -Dcsp.sentinel.dashboard.serverlocalhost:9090 -Dproject.namesentinel-dashboard -jar sentin…

Docker镜像制作实战实现淘宝网站部署

登录docker环境nohup /usr/local/docker/dockerd -H 0.0.0.0:2375 -H unix:///var/run/docker.sock & 创建仓库源&#xff0c;上传daemon.json&#xff0c;内容为镜像仓库地址 重启docker服务&#xff0c;加载镜像源 下载nginx镜像 也可通过已知镜像地址下载命令如下 下载…

数据结构_day1

目录 大纲 1.数据结构基础知识 1.1 什么是数据结构 1.2 数据 1.3 逻辑结构 1.4 存储结构 1.4.1 顺序存储 1.4.2 链式存储 1.4.3 索引存储结构 1.4.4 散列存储 1.5 操作 2.算法基础知识 2.1 什么是算法 2.2 算法的设计 2.3 算法的特性 2.4 评价算法的好坏 大纲 数据结构、算法(理…

AI绘画ComfyUI 也可以有插件市场!

前言 上文我们介绍了 ComfyUI 的本地部署和基本使用。其中的插件安装&#xff0c;小伙伴们是不是觉得还是有点麻烦的&#xff0c;ComfyUI 有没有类似 WebUI 的插件管理功能呢&#xff0c;其实是有的&#xff0c;而且比 WebUI 的插件管理功能更强大。 今天我们就主要来介绍一下…

【目标检测】常见机械零件数据集5900张5类VOC+YOLO

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;5913 标注数量(xml文件个数)&#xff1a;5913 标注数量(txt文件个数)&#xff1a;5913 标注…

大数据面试-笔试SQL

一个表table: c_id u_id score&#xff1b;用SQL计算每个班级top5学生的平均分&#xff08;腾讯&#xff09; select class_id,avg(score) as score_avg from (select *,row_number() over(partition by class_id order by score desc) as score_rank from table ) t1 where t…

<<迷雾>> 第10章 用机器做一连串的加法(7)--装载数据的过程及相加过程 示例电路

info::操作说明 此电路属于将前述电路的 控制器 部分单独独立出来. 操作过程与前述类似, 参考前一个示例的操作步骤. primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch10-11-process…

electron-vite_4使用WebContentsView快速集成已有项目

Web 嵌入官方推荐使用WebContentsView&#xff1b;集成也比较简单&#xff0c;但还是需要你单独写点东西&#xff1b; src/main/index.ts进行修改 import { app, shell, BrowserWindow, ipcMain, nativeImage, WebContentsView, dialog } from electron;function createWindo…

吹爆这份Stable diffusion提示词攻略(含链接)

Stable diffusion 提示词里面的各种符号小括号 ( )、大括号 { }、中括号 [ ]、尖括号<>、竖线|、下划线_到底是什么意思&#xff1f; ** ** 别担心&#xff0c;这篇文章三分钟教会你填写 Stable diffusion 提示词的各种烦恼~~ SD提示词基础&#xff1a; 1、提示词与提…

【算法】——双指针算法合集(力扣)

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 第一题&#xff1a;移动零 第二题&#xff1a;复写零 第三题&#xff1a;快乐数 第四题&#xff1a…

鸿蒙学习笔记--搭建开发环境及Hello World

文章目录 一、概述二、开发工具下载安装2.1 下载开发工具DevEco Studio NEXT2.2 安装DevEco Studio 三、启动软件四、第一个应用Hello World4.1 创建应用4.2 创建模拟器4.3 开启Hyper-v功能4.4 启动虚拟机 剑子仙迹 诗号&#xff1a;何须剑道争锋&#xff1f;千人指&#xff0c…

免费又好用的保护网站WAF,基于语义引擎的waf雷池社区版推荐

为什么传统规则防护失效了&#xff1f;&#x1f914; 目前&#xff0c;大多数 Web 应用防火墙&#xff08;WAF&#xff09;依赖规则匹配来识别和阻断攻击流量。然而&#xff0c;随着 Web 攻击的低成本、复杂多样的手段和频繁爆发的高危漏洞&#xff0c;管理人员不得不频繁调整防…

B树(Balance-tree,多路平衡查找树)

目录 1.来由 2.定义 2.1内部结点 2.2外部结点&#xff08;失败结点&#xff09; 2.3阶 3.性质 3.1平衡 3.2有序 3.3多路 4.查找 4.1成功 4.2失败 5.插入 4.1不用调整 4.2需要调整 4.3多次调整 4.4根节点溢出 6.构建 7.删除 7.1不用调整 7.2出现下溢出 7.…

数据结构之二叉搜索树(key模型与key_value模型)

二叉搜索树&#xff08;key模型与key_value模型&#xff09; 1. ⼆叉搜索树的概念2. ⼆叉搜索树的性能分析3. ⼆叉搜索树的插⼊4. ⼆叉搜索树的查找5. ⼆叉搜索树的删除6. ⼆叉搜索树的实现代码7. ⼆叉搜索树key和key/value使⽤场景7.1 key搜索场景&#xff1a;7.2 key/value搜…

Vue入门-指令修饰符-v-model修饰符

v-model.trim ->去除首尾空格 demo&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>…

C语言刷题 LeetCode 30天挑战 (十)Stack 栈 (MinStack)

这个题目要求你设计一个特殊的栈&#xff08;MinStack&#xff09;&#xff0c;不仅要具备普通栈的基本功能&#xff08;push、pop 和 top&#xff09;&#xff0c;还要能够在常数时间内&#xff08;O(1) 时间复杂度&#xff09;获取栈中的最小元素&#xff08;getMin&#xff…

C#的JSON序列化与反序列化

前言 记录使用C#进行json序列化和反序列化方法 一、序列化 序列化&#xff0c;即将数据组织成某种形式&#xff0c;存储在变量或文件中&#xff0c;是保存数据的一种方式。 下面以数据的形式存放数据&#xff0c;以字典的形式组织数据&#xff0c;将组织好的数据存放在json文…

计算机网络:物理层 —— 数据的传输方式

文章目录 传输方式串行传输串行传输方式特点应用 并行传输特点应用 网卡的串/并转换同步传输同步时钟频率的误差问题特点应用 异步传输特点应用 单向通信特点应用 双向交替通信特点应用 双向同时通信特点应用 传输方式 串行传输 串行传输是一种数据传输方式&#xff0c;指的是…

熵权法计算评价指标权重——使用Excel VBA实现

[ 熵权法 ] 信息是系统有序程度的一个度量&#xff0c;熵是系统无序程度的一个度量&#xff1b;根据信息熵的定义&#xff0c;对于某项指标&#xff0c;可以用熵值来判断某个指标的离散程度&#xff0c;其信息熵值越小&#xff0c;指标的离散程度越大&#xff0c; 该指标对综合…

大模型与生成式AI结合:HelpLook引领零售增长新篇章

近年来&#xff0c;零售行业在数字化、技术革新、经济波动及消费者需求多变的挑战下&#xff0c;展现出强大的适应性和创新力。AI技术的深度融合&#xff0c;正引领零售、电商、教育等领域&#xff0c;尤其是零售业步入一个生产力飞跃、客户至上的全新时代。企业亟需挖掘客户与…