当前位置: 首页 > news >正文

Spring Boot入门指南

前言

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。本文将详细介绍 Spring Boot 的基本概念、环境搭建、第一个 Spring Boot 应用的创建、常用注解以及一些最佳实践。

1. Spring Boot 基本概念

1.1 什么是 Spring Boot?

Spring Boot 是一个基于 Spring 框架的快速开发工具,它简化了基于 Spring 的应用开发。Spring Boot 提供了一种开箱即用的配置方式,避免了复杂的 XML 配置,使得开发者可以更快地构建独立的、生产级别的基于 Spring 框架的应用。

1.2 核心特性

  • 自动配置:Spring Boot 会根据添加的 jar 依赖自动配置 Spring 应用。
  • 起步依赖:Spring Boot 提供了一系列的“起步依赖”(Starter Dependency),简化了 Maven 或 Gradle 的配置。
  • 独立运行:Spring Boot 应用内嵌了 Tomcat、Jetty 或 Undertow 服务器,无需部署 WAR 文件。
  • 生产就绪:Spring Boot 提供了生产就绪的功能,如性能指标、健康检查和外部化配置。

2. 环境搭建

2.1 开发工具

  • IDE:IntelliJ IDEA、Eclipse、Spring Tool Suite (STS)
  • Java:JDK 8 或更高版本
  • Maven:3.2+ 或 Gradle 4.0+

2.2 安装 JDK

  1. 下载 JDK: 访问 Oracle 官方网站 或 OpenJDK 官方网站 下载 JDK。

  2. 安装 JDK: 根据操作系统的不同,选择相应的安装包进行安装。

  3. 配置环境变量

    • Windows
      1. 打开“系统属性” -> “高级” -> “环境变量”。
      2. 在“系统变量”中新建 JAVA_HOME,值为 JDK 安装路径。
      3. 编辑 Path 变量,添加 %JAVA_HOME%\bin
    • Linux: 编辑 ~/.bashrc 文件,添加以下内容:
       Sh 

      深色版本

      export JAVA_HOME=/path/to/jdk
      export PATH=$JAVA_HOME/bin:$PATH
      然后运行 source ~/.bashrc 使配置生效。

2.3 安装 Maven

  1. 下载 Maven: 访问 Maven 官方网站 下载 Maven。

  2. 解压 Maven: 将下载的压缩包解压到指定目录。

  3. 配置环境变量

    • Windows
      1. 打开“系统属性” -> “高级” -> “环境变量”。
      2. 在“系统变量”中新建 MAVEN_HOME,值为 Maven 解压路径。
      3. 编辑 Path 变量,添加 %MAVEN_HOME%\bin
    • Linux: 编辑 ~/.bashrc 文件,添加以下内容:
       Sh 

      深色版本

      export MAVEN_HOME=/path/to/maven
      export PATH=$MAVEN_HOME/bin:$PATH
      然后运行 source ~/.bashrc 使配置生效。

3. 创建第一个 Spring Boot 应用

3.1 使用 Spring Initializr

  1. 访问 Spring Initializr: 打开 Spring Initializr。

  2. 配置项目

    • Project:选择 Maven Project。
    • Language:选择 Java。
    • Spring Boot:选择最新稳定版本。
    • Group:输入项目的 Group ID,例如 com.example
    • Artifact:输入项目的 Artifact ID,例如 demo
    • Name:输入项目的名称,例如 demo
    • Description:输入项目的描述。
    • Package Name:输入项目的包名,例如 com.example.demo
    • Packaging:选择 Jar。
    • Java Version:选择 Java 8 或更高版本。
    • Dependencies:选择所需的依赖,例如 Spring Web。
  3. 生成项目: 点击“Generate”按钮,下载生成的项目压缩包,解压到指定目录。

3.2 项目结构

解压后的项目结构如下:

 

深色版本

demo
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── demo
│   │   │               └── DemoApplication.java
│   │   └── resources
│   │       ├── application.properties
│   │       └── static
│   │       └── templates
└── pom.xml

3.3 编写代码

  1. 主类DemoApplication.java 是项目的入口类,包含 main 方法。

     Java 

    深色版本

    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);}
    }
  2. 控制器: 创建一个简单的 REST 控制器 HelloController.java

     Java 

    深色版本

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

3.4 运行应用

  1. 使用 IDE 运行: 在 IDE 中右键点击 DemoApplication.java,选择“Run”或“Debug”。

  2. 使用 Maven 运行: 打开终端,导航到项目根目录,运行以下命令:

     Sh 

    深色版本

    mvn spring-boot:run
  3. 访问应用: 打开浏览器,访问 http://localhost:8080/hello,你应该能看到 "Hello, Spring Boot!" 的页面。

4. 常用注解

4.1 核心注解

  • @SpringBootApplication:组合注解,包含 @Configuration@EnableAutoConfiguration 和 @ComponentScan
  • @Configuration:标记类为配置类。
  • @ComponentScan:扫描指定包及其子包下的组件。
  • @EnableAutoConfiguration:启用 Spring Boot 的自动配置。
  • @RestController:标记类为 REST 控制器。
  • @GetMapping:映射 HTTP GET 请求到特定的处理方法。
  • @PostMapping:映射 HTTP POST 请求到特定的处理方法。
  • @Autowired:自动注入依赖。

4.2 示例

 

Java

深色版本

package com.example.demo.service;import org.springframework.stereotype.Service;@Service
public class HelloService {public String sayHello() {return "Hello, Service!";}
}
 

Java

深色版本

package com.example.demo.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Autowiredprivate HelloService helloService;@GetMapping("/hello")public String hello() {return helloService.sayHello();}
}

5. 最佳实践

5.1 分层架构

  • Controller:处理 HTTP 请求。
  • Service:处理业务逻辑。
  • Repository:处理数据持久化。

5.2 配置管理

  • application.properties:配置应用的基本属性。
  • application.yml:配置应用的基本属性,支持 YAML 格式。

5.3 日志管理

  • logback-spring.xml:配置日志输出格式和级别。

5.4 安全管理

  • Spring Security:集成 Spring Security 进行安全控制。

5.5 测试

  • 单元测试:使用 JUnit 和 Mockito 进行单元测试。
  • 集成测试:使用 Spring Boot Test 进行集成测试。

6. 总结

通过本文,我们详细介绍了 Spring Boot 的基本概念、环境搭建、第一个 Spring Boot 应用的创建、常用注解以及一些最佳实践。Spring Boot 的强大之处在于它能够简化 Spring 应用的开发,使得开发者可以更快地构建独立的、生产级别的应用。希望本文对你理解和使用 Spring Boot 有所帮助。

相关文章:

Spring Boot入门指南

前言 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。本文将详细介绍 Spring Boot 的基本概念、环境搭建、第一…...

MYSQL(学习笔记)

<div>深分页怎么优化&#xff1f;</div> <div>还是以上面的SQL为空&#xff1a;select * from xxx order by id limit 500000, 10;</div> <div>方法一&#xff1a;</div> <div>从上面的分析可以看出&#xff0c;当offset非常大时&am…...

学校周赛(1)

A - Short Sort 题目&#xff1a; 思路&#xff1a; 本条题目只允许改一处地方&#xff0c;只有三个字母&#xff0c;我们可以直接枚举所有移动过的结果&#xff0c;同时使用哈希去记录其值&#xff0c;对于每一个输入我们都寻找是否有这个值记录&#xff0c;有则输出YES否则…...

人生苦短,我用Python✌

面向代码的解释型语言 数据开发和AI 编程语言:让计算机了解我们干什么&#xff0c;翻译官 1.下载软件 解释器安装 点击第二个 改路径 D:\python 安装 测试 winr打开 输入代码 输出 退出环境 exit&#xff08;&#xff09; 新建文本文档后缀改成py 编写 运行 安装编写代码…...

uniapp js判断key是否在json中?

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…...

Codeforces Round 975 (Div. 2) C. Cards Partition

题目链接&#xff1a;题目 大意&#xff1a; 给出若干种卡片&#xff0c;每种卡片有一定数量&#xff0c;你可以加入不超过 k k k张任意已给出种类的卡片&#xff0c;使得它们可以被分成若干组&#xff0c;每组容量一定&#xff0c;且同组内不存在相同种类的卡片&#xff0c;…...

Qt 首次配置 Qt Creator 14.01 for Python

前言&#xff1a; 如何用QT实现Python的配置的交互界面。本文从0开始&#xff0c;进行实践的介绍。 在上一节里面&#xff0c;我们做了社区版本的配置&#xff1a; https://blog.csdn.net/yellow_hill/article/details/142597007?spm1001.2014.3001.5501 这一节&#xff0…...

【python】代码发布前检查- vulture:查找死代码

分析Python项目中未被使用的.py文件 Vulture&#xff1a; Vulture是一个专门用于查找Python代码中的死代码的工具。它可以识别未使用的代码&#xff0c;包括未导入的模块。 安装&#xff1a; pip install vulture使用&#xff1a; vulture your_project_directory...

Yolov10环境配置

参考文章&#xff1a;1.YOLOv10超详细环境搭建以及模型训练&#xff08;GPU版本&#xff09;-CSDN博客 2.Windows下安装pytorch教程(下载.whl的方式)_pytorch whl-CSDN博客 安装步骤和文件夹顺序一样 1.安装CUDA和cuDNN 1.1安装CUDA 1.1.1查看当前你的电脑显卡支持的最高CUD…...

iOS 提取图片的主题色,并支持灵活提取

遇到一个需求&#xff0c;要提取图片中的色调&#xff0c;但还有一点特殊的需求&#xff0c;就是不是提取颜色最多的色调&#xff0c;也不是平均的色调&#xff0c;是图片中偏暗的色调 这就需要我们动态的调整我们提取的算法&#xff0c; 下面就看代码 dispatch_async(dispatch…...

语雀笔记使用记录

初识语雀 语雀官网 语雀帮助 教你如何使用语雀提高效率 语雀极简使用指南 | 10个常用技巧&#xff0c;带你快速入门 语雀安装 语雀下载地址 根据自己的pc平台下载对应的版本&#xff0c;然后傻瓜式安装即可 初试语雀 语雀为云笔记&#xff0c;并且其特性比较符合我个人的需求…...

安全教育培训小程序系统开发制作方案

安全教育培训小程序系统是为了提高公众的安全意识&#xff0c;普及安全知识&#xff0c;通过微信小程序的方式提供安全教育培训服务&#xff0c;帮助用户了解并掌握必要的安全防范措施。 一、目标用户 企业员工&#xff1a;各岗位员工&#xff0c;特别是IT部门、财务、行政等对…...

【面试题】软件测试实习(含答案)

软件测试实习常见面试题&#xff0c;主要是功能测试相关的基础问题 目录 一、软件测试基础 1、介绍一下你最近的项目&#xff0c;以及工作职责 2、软件项目的测试流程? 3、黑盒测试与白盒测试的区别? 4、黑盒测试常见的设计方法?怎么理解等价类方法和边界值方法 1&…...

后端回写前端日期格式化

问题 不进行格式化处理&#xff0c;就会导致传递的字符串很奇怪 解决方案 注解&#xff08;字段&#xff09; <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</…...

微信小程序开发系列之-在微信小程序中使用云开发

微信小程序开发系列之-在微信小程序中使用云开发 随着微信小程序的快速发展&#xff0c;云开发成为了一个强大的工具&#xff0c;它提供了无需搭建和维护服务器的便捷环境。云开发允许开发者直接使用云数据库、存储和云函数等服务&#xff0c;大大简化了小程序的开发流程。在本…...

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024 前言简介任务定义模型架构Encoding Dialogue InformationCapturing Associated InformationPredicting Emotion and Generating Response损失函数问题前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦…...

零基础教你如何开发webman应用插件

0X03 应用目录机构 plugin/ └── dingdingtalk │ ├── api │ │ └── Install.php │ ├── app │ │ ├── controller │ │ │ └── IndexController.php │ │ ├── functions.php │ │ ├── middleware │ │ ├── mo…...

AVL树(平衡二叉树)的介绍以及相关构建

欢迎光临 &#xff1a; 羑悻的小杀马特-CSDN博客 目录 一AVL树的介绍&#xff1a; 二AVL树的实现&#xff1a; 1结构框架&#xff1a; 2节点的插入&#xff1a; 旋转&#xff1a; 21左单旋&#xff1a; 2.1.1左单旋介绍及步骤&#xff1a; 2.1.2左单旋代码实…...

SAP员工士气因重组受到打击

SAP在2024年经历了员工士气显著下降的局面&#xff0c;特别是在国内员工中。这一变化与公司在1月宣布的重组计划紧密相关。根据彭博社的报道&#xff0c;6月进行的一项调查显示&#xff0c;SAP约16,500名员工中&#xff0c;有51%愿意接受竞争对手的类似职位&#xff0c;而对公司…...

Unity3D 中构建行为树插件详解

前言 在Unity3D中&#xff0c;行为树&#xff08;Behavior Tree&#xff09;是一种用于游戏AI设计和实现的高级工具&#xff0c;它提供了一种结构化和模块化的方式来管理游戏实体的行为。行为树通过树状结构组织了一系列节点&#xff0c;每个节点代表了一个决策或动作。这种结…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接&#xff1a;3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

自然语言处理——Transformer

自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效&#xff0c;它能挖掘数据中的时序信息以及语义信息&#xff0c;但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN&#xff0c;但是…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

多模态图像修复系统:基于深度学习的图片修复实现

多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...