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

Spring Boot ——入门与实战

目录

一、核心优势

二、快速入门(创建第一个 Spring Boot 项目)

1. 环境准备

2. 创建项目(3 种方式)

方式 1:Spring Initializr(官方脚手架)

方式 2:IDEA 直接创建

方式 3:手动搭建(了解核心结构)

3. 编写核心代码

主启动类(必须)

控制器(测试接口)

4. 运行与访问

三、核心配置

1. 配置文件类型

2. 基础配置示例(application.yml)

3. 读取配置的方式

方式 1:@Value 注解

方式 2:@ConfigurationProperties(批量读取)

四、常用功能模块

五、打包与部署

1. 打包为可执行 JAR

2. 部署到服务器

六、关键注解说明

七、常见问题与解决方案


Spring Boot 是由 Pivotal 团队开发的基于 Spring 框架的快速开发脚手架,核心目标是简化 Spring 应用的搭建、配置和部署,通过 “约定优于配置” 的理念,让开发者专注于业务逻辑而非繁琐的配置。

一、核心优势

  1. 自动配置:根据项目依赖自动配置 Spring 组件(如引入spring-boot-starter-web自动配置 MVC、Tomcat 等);
  2. 起步依赖:将常用依赖打包成 starter(如spring-boot-starter-data-jpaspring-boot-starter-test),简化 pom.xml/gradle 配置;
  3. 内嵌服务器:默认内嵌 Tomcat/Jetty/Undertow,无需手动部署 WAR 包;
  4. 简化部署:可打包为可执行 JAR 包,直接通过java -jar运行;
  5. 监控与管理:内置 Actuator 模块,可监控应用健康状态、指标等;
  6. 无代码生成 / XML 配置:完全基于注解,零 XML 配置(可选保留)。

二、快速入门(创建第一个 Spring Boot 项目)

1. 环境准备

  • JDK 8+(推荐 11/17,Spring Boot 3.x 要求 JDK 17+);
  • Maven/Gradle(构建工具);
  • IDE(IntelliJ IDEA/Eclipse,IDEA 推荐)。

2. 创建项目(3 种方式)

方式 1:Spring Initializr(官方脚手架)
  1. 访问 start.spring.io;
  2. 配置:
    • Project:Maven/Gradle;
    • Language:Java;
    • Spring Boot Version:选择稳定版(如 3.2.x);
    • Group/Artifact:项目坐标(如 com.example/demo);
    • Dependencies:添加Spring Web(Web 开发);
  3. 点击 Generate 下载项目压缩包,解压后导入 IDE。
方式 2:IDEA 直接创建
  1. IDEA → New Project → Spring Initializr;
  2. 填写上述配置,自动生成项目结构。
方式 3:手动搭建(了解核心结构)

xml

<!-- pom.xml 核心依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> <relativePath/> </parent> <dependencies> <!-- Web 起步依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 测试依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <!-- 打包为可执行 JAR --> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>

3. 编写核心代码

主启动类(必须)

java

运行

package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; // 核心注解:组合了 @Configuration + @EnableAutoConfiguration + @ComponentScan @SpringBootApplication public class DemoApplication { public static void main(String[] args) { // 启动 Spring Boot 应用 SpringApplication.run(DemoApplication.class, args); } }
控制器(测试接口)

java

运行

package com.example.demo.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; // 组合 @Controller + @ResponseBody,返回 JSON/字符串而非视图 @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello Spring Boot!"; } }

4. 运行与访问

  • 直接运行DemoApplication类的main方法;
  • 浏览器访问http://localhost:8080/hello,即可看到返回结果。

三、核心配置

1. 配置文件类型

Spring Boot 支持多种配置文件,优先级:properties<yml<yaml(推荐 yml,更简洁)。

  • 默认路径:src/main/resources/application.yml(或 application.properties);
  • 多环境配置:application-dev.ymlapplication-prod.yml

2. 基础配置示例(application.yml)

yaml

# 服务器配置 server: port: 8080 # 端口 servlet: context-path: /demo # 上下文路径 # Spring 配置 spring: # 多环境激活(dev/prod/test) profiles: active: dev # 数据源配置(以 MySQL 为例) datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: 123456 # 自定义配置(可通过 @Value 或 @ConfigurationProperties 读取) custom: name: Spring Boot version: 3.2.0

3. 读取配置的方式

方式 1:@Value 注解

java

运行

@RestController public class ConfigController { // 读取自定义配置 @Value("${custom.name}") private String name; @Value("${custom.version}") private String version; @GetMapping("/config") public String getConfig() { return "Name: " + name + ", Version: " + version; } }
方式 2:@ConfigurationProperties(批量读取)

java

运行

@Component @ConfigurationProperties(prefix = "custom") // 配置前缀 public class CustomConfig { private String name; private String version; // 生成 getter/setter public String getName() { return name; } public void setName(String name) { this.name = name; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } }

四、常用功能模块

Spring Boot 提供了丰富的 starter 依赖,覆盖主流开发场景:

功能场景核心依赖(starter)
Web 开发spring-boot-starter-web
数据库访问spring-boot-starter-data-jpa/MyBatis
数据库连接spring-boot-starter-jdbc
缓存spring-boot-starter-cache(+ Redis/Ehcache)
安全认证spring-boot-starter-security
消息队列spring-boot-starter-amqp(RabbitMQ)
监控运维spring-boot-starter-actuator
模板引擎spring-boot-starter-thymeleaf
测试spring-boot-starter-test

五、打包与部署

1. 打包为可执行 JAR

bash

运行

# Maven 打包(项目根目录执行) mvn clean package # 运行打包后的 JAR java -jar target/demo-0.0.1-SNAPSHOT.jar # 指定环境运行 java -jar target/demo-0.0.1-SNAPSHOT.jar --spring.profiles.active=prod

2. 部署到服务器

  • 将 JAR 包上传到服务器;
  • 通过nohup java -jar demo.jar &后台运行(避免终端关闭停止);
  • 可配合systemd配置成系统服务,实现开机自启。

六、关键注解说明

注解作用
@SpringBootApplication核心注解,组合 @Configuration + @EnableAutoConfiguration + @ComponentScan
@RestController标记控制器,返回 JSON / 字符串(替代 @Controller + @ResponseBody)
@GetMapping/@PostMapping简化请求映射(替代 @RequestMapping (method=RequestMethod.GET))
@Autowired自动注入依赖(按类型)
@Component/@Service/@Repository标记组件,纳入 Spring 容器管理(分层注解)
@Configuration标记配置类(替代 XML 配置)
@Bean声明 Bean 实例,放入 Spring 容器

七、常见问题与解决方案

  1. 端口被占用:修改server.port为未占用端口(如 8081);
  2. 依赖冲突:通过mvn dependency:tree分析依赖,排除冲突包;
  3. 配置文件不生效:检查文件路径、名称是否正确(如application.yml拼写错误);
  4. 启动失败(数据源错误):检查数据库地址、用户名、密码是否正确,数据库是否启动;
  5. 热部署:添加spring-boot-devtools依赖,实现代码修改后自动重启。
http://www.zskr.cn/news/117267.html

相关文章:

  • UniApp APP 端跳转三方页面后返回 APP 的实现原理与实操解析
  • 告别手动调试:Excel格式转换效率提升300%的秘诀
  • 零基础教程:Visual Studio下载安装图文指南
  • Web3.0“三体系统”革命:当DApp、钱包与交易所打破次元壁
  • 【dz-950】基于单片机的音乐播报器设计
  • EmotiVoice是否支持批量任务队列?自动化生成秘诀
  • 学生评价标准与示例,AI生成评价新方式
  • Airflow - How to enable the test connection feature?
  • Item38--通过复合 (Composition) 塑模出 has-a
  • 石油化工实验室LIMS系统,石油化工实验室管理系统,LIMS系统实现从原油评价、馏分分析到成品油出厂的全流程质控!
  • AI CRM系统推荐,原圈科技赋能地产销售
  • 比手动快10倍!自动化处理Schannel错误的方法
  • Day17 C++提高 之 类模板案例
  • C# SignalR 添加Swagger
  • JAVA设计模式之观察者模式
  • Airflow - Postgres Connection
  • AI内控智能体开发:把风险防控交给“智能管家”
  • 无需安装!浏览器直接运行Java8的5种创新方案
  • 2025最新CPVC电力管服务商 TOP5 评测!服务深耕四川、贵州、西藏、重庆,优质厂商权威榜单发布,技术赋能构建电力工程安全生态 - 全局中转站
  • 零基础用Vue3打造你的第一个PDF阅读器
  • 2025 最新波纹管厂家 TOP5 评测!服务深度覆盖四川、贵州、西藏、重庆,西南标杆 + 全品类解决方案权威榜单发布,技术赋能基建工程升级 - 全局中转站
  • Item40--明智而审慎地使用多重继承(尽量别用,除非是 Interface 接口类)
  • A860-2020-T301编码器
  • 30秒搭建防火墙状态监控原型
  • Item39--明智而审慎地使用 private 继承
  • 2025年国内正规的工业冷却塔实力厂家哪家靠谱,冷却塔填料/方形横流冷却塔/工业冷却塔/圆形逆流冷却塔/工业冷却塔定做厂家哪家权威 - 品牌推荐师
  • 高危漏洞CVE-2025-54004:WooCommerce前台管理插件权限绕过漏洞剖析
  • AutoHotkey v2 (AHK) windows自动化使用
  • 想做安全副业却纠结方向?漏洞挖掘、技术博客、竞赛奖金实战哪个更适合你?
  • ConvLSTM实战:构建交通流量预测系统