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

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.rhkb.cn/news/446581.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM进阶调优系列(1)类加载器原理一文讲透

今天开始写JVM调优系列&#xff0c;并发编程系列也会继续穿插连载&#xff0c;让各位同学闲暇之余有更多阅读选择。 起笔写第一篇&#xff0c;并不好写。首先要构思整个系列的大概框架&#xff0c;一个好的框架一定是深度上由浅入深、逻辑上有严格顺序&#xff0c;读者订阅跟踪…

《OpenCV计算机视觉》—— 人脸检测

文章目录 一、人脸检测流程介绍二、用于人脸检测的关键方法1.加载分类器&#xff08;cv2.CascadeClassifier()&#xff09;2.检测图像中的人脸&#xff08;cv2.CascadeClassifier.detectMultiscale()&#xff09; 三、代码实现 一、人脸检测流程介绍 下面是一张含有多个人脸的…

使用camunda的DMN实现班级决策案例

班级决策 Camunda 支持DMN1.3版本&#xff0c;在BPMN业务活动流程中&#xff0c;可通过业务规则任务调用DMN决策。DMN决策目的是想把业务代码和决策进行解耦&#xff0c;使决策分析人员只需关心决策即可。 需求描述 通过幼儿园学生年龄age和身高height分配不同的班级&#xff0…

10.13论文阅读

通过联合学习检测和描述关键点增强可变形局部特征 摘要 局部特征提取是计算机视觉中处理图像匹配和检索等关键任务的常用方法。大多数方法的核心理念是图像经历仿射变换&#xff0c;忽略了诸如非刚性形变等更复杂的效果。此外&#xff0c;针对非刚性对应的新兴工作仍然依赖于…

个性化图像生成新王炸!无需微调,Meta重磅发布Imagine yourself:三大核心全面SOTA!

论文链接&#xff1a;https://arxiv.org/pdf/2409.13346 亮点直击 本文提出了“Imagine Yourself”&#xff0c;这是一种用于个性化图像生成的创新型最先进模型。该模型可以将任意参考图像作为输入进行定制化图像生成&#xff0c;并且不需要针对每个对象进行调整。“Imagine Yo…

springboot汽车售票系统演-毕业设计源码07891

基于springboot的汽车售票系统 摘 要 汽车售票系统主要功能模块包括系统用户管理、车次车票信息、车票预定、退票信息、改签信息等&#xff0c;采取面对对象的开发模式进行软件的开发和硬体的架设&#xff0c;能很好的满足实际使用的需求&#xff0c;完善了对应的软体架设以及…

【C】C语言常见概念~

C语言常见概念 转义字符 转义字符&#xff0c;顾名思义&#xff0c;转变原来意思的字符 比如 #include <stdio.h> int main() {printf("abcndef");return 0; }输出的结果为&#xff1a; 将代码修改一下&#xff1a; #include <stdio.h> int main(…

萱仔求职复习系列——2 Linux的常用方法(包含基础进阶高级操作)

由于最近接了一个笔试&#xff0c;发现笔试可能涉及到Linux&#xff0c;我准备临时抱佛脚一下赶紧复习一下Linux的用法哈哈。Linux 的基础用法包含文件系统操作、权限管理、网络配置、进程管理等基本命令&#xff1b;进阶操作包括网络调试、包管理、服务管理和用户管理等&#…

UE5学习笔记24-添加武器弹药

一、给角色的武器添加弹药 1.创建界面&#xff0c;根据笔记23的界面中添加 2.绑定界面控件 UPROPERTY(meta (Bindwidget))UTextBlock* WeaponAmmoAmount;UPROPERTY(meta (Bindwidget))UTextBlock* CarriedAmmoAmount; 3.添加武器类型枚举 3.1创建武器类型枚举头文件 3.2创建文…

【论文解读系列】EdgeNAT: 高效边缘检测的 Transformer

代码&#xff1a; https://github.com/jhjie/edgenat 论文&#xff1a; https://arxiv.org/abs/2408.10527v1 论文 EdgeNAT: Transformer for Efficient Edge Detection 介绍了一种名为EdgeNAT的基于Transformer的边缘检测方法。 1. 背景与动机 EdgeNAT预测结果示例。(a, b)…

软考《信息系统运行管理员》- 4.1信息系统软件运维概述

4.1信息系统软件运维概述 文章目录 4.1信息系统软件运维概述信息系统软件运维的概念信息系统软件的可维护性及维护类型对软件可维护性的度量可以从以下几个方面进行&#xff1a;软件维护分类&#xff1a; 信息系统软件运维的体系1.**需求驱动**2.**运维流程**3.**运维过程**4.*…

LabVIEW提高开发效率技巧----事件触发模式

事件触发模式在LabVIEW开发中是一种常见且有效的编程方法&#xff0c;适用于需要动态响应外部或内部信号的场景。通过事件结构&#xff08;Event Structure&#xff09;和用户自定义事件&#xff08;User Events&#xff09;&#xff0c;开发者可以设计出高效的事件驱动程序&am…

WPF 为button动态设置不同的模板

有时候需要动态的设置一些按钮的状态模板。使一个button显示不同的内容&#xff0c;比如Button未点击安装显示&#xff1a; 安装后显示&#xff1a; 可以通过设置button的content&#xff0c;通过content来设置不同的模板来实现功能&#xff0c;以下是代码&#xff1a; MainWi…

opencascade鼠标拖拽框选功能

1.首先在OccView中添加用于显示矩形框的类 //! rubber rectangle for the mouse selection.Handle(AIS_RubberBand) mRectBand; 2.设置框选的属性 mRectBand new AIS_RubberBand(); //设置属性 mRectBand->SetLineType(Aspect_TOL_SOLID); //设置变宽线型为实线 mRe…

day11-SpringMVC

一、SpringMVC 1.SpringMVC流程分析 2.各种注解 3.接收请求参数 3.1 简单类型 3.2 对象类型 3.3 数组类型 3.4 集合类型 3.5 日期类型 3.6 json参数类型 3.7 路径参数 二、统一异常处理 三、Restful

tensorflow入门案例手写数字识别人工智能界的helloworld项目落地1

参考 https://tensorflow.google.cn/?hlzh-cn https://tensorflow.google.cn/tutorials/keras/classification?hlzh-cn 项目资源 https://download.csdn.net/download/AnalogElectronic/89872174 文章目录 一、案例学习1、导入测试和训练数据集&#xff0c;定义模型&#xff…

Unreal5从入门到精通之 如何使用事件分发器EventDispather

文章目录 前言1.创建事件分发器设置属性2.创建Bind、Unbind及Unbind All节点在蓝图类中创建在关卡蓝图中创建3.创建事件分发器事件节点4.调用事件分发器在蓝图类中进行调用在关卡蓝图中进行调用前言 事件分发器是 Unreal Engine(UE)中一个重要的概念,它负责在游戏运行时管理…

超GPT3.5性能,无限长文本,超强RAG三件套,MiniCPM3-4B模型分享

MiniCPM3-4B是由面壁智能与清华大学自然语言处理实验室合作开发的一款高性能端侧AI模型&#xff0c;它是MiniCPM系列的第三代产品&#xff0c;具有4亿参数量。 MiniCPM3-4B模型在性能上超过了Phi-3.5-mini-Instruct和GPT-3.5-Turbo-0125&#xff0c;并且与多款70亿至90亿参数的…

基于socket实现客户端与服务器之间TCP通信

我们在算法部署时&#xff0c;通常需要进行算法端与其他服务端的通信&#xff0c;要么接受指令、要么是需要上传算法结果&#xff1b;除了我们常用的gRPC、HTTP、MQ等方式&#xff0c;还可以利用TCP来实现可靠通信&#xff1b;本次我们利用socket来展示如何进行两端的TCP通信。…

SAP SD学习笔记10 - SD出荷传票1 在库转送Order - 补充出荷 详解

上一章学习了受注传票中的不完全Log和Business Partner&#xff08;取引先机能&#xff09;的知识。 SAP SD学习笔记09 - 受注传票中的不完全Log 和 Business Partner(取引先机能&#xff09;-CSDN博客 本章继续学习SD的内容。 - 在库转送Order - 补充出荷 目录 1&#xff0…