十五:java web(7)-- Spring Boot
目录
1. Spring Boot 简介
1.1 简介
1.2 Spring Boot 的特点
1.3 Spring Boot 和 Spring 的关系
2. Spring Boot 快速入门
2.1 创建第一个 Spring Boot 项目
3. Spring Boot 配置管理
3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐yml
3.2 配置文件的环境管理
4. 常用的 Starter 依赖
4.1 spring-boot-starter-web
4.2 spring-boot-starter-data-jpa
4.3 spring-boot-starter-thymeleaf
4.4 spring-boot-starter-security
4.5 spring-boot-starter-logging
4.6 spring-boot-starter-test
4.7 spring-boot-starter-activemq
4.8 spring-boot-starter-mail
4.9 spring-boot-starter-cache
4.10 spring-boot-starter-actuator
5. 内嵌服务器与项目打包
5.1 内嵌服务器
5.1.1 默认内嵌 Tomcat
5.1.2 选择其他内嵌服务器
5.1.3 修改内嵌服务器的配置
5.2 项目打包
5.2.1 JAR 包打包
5.2.2 WAR包打包
-
1. Spring Boot 简介
-
1.1 简介
-
Spring Boot 是一个开源的 Java 框架,它简化了 Spring 应用的配置和部署过程。Spring Boot 提供了开箱即用的功能,可以大大减少开发人员的配置工作,并让开发人员专注于业务逻辑的实现。它通过内嵌的服务器(如 Tomcat 或 Jetty)使得 Java 应用可以像普通应用一样运行,不需要部署到外部的 Web 服务器。
-
Spring Boot 的目标是通过减少样板代码和简化配置,使得开发人员能够快速启动和开发 Spring 应用。它基于 Spring 框架,并与 Spring Cloud 深度集成,特别适用于微服务架构。
-
终于不需要再写 Spring 配置文件和 Bean 了,解脱!这些繁琐的配置和 Bean 定义让人头大,特别是在早期的 Spring 版本中,繁重的 XML 配置是让开发过程变得异常复杂。
-
-
1.2 Spring Boot 的特点
-
自动配置:Spring Boot 通过自动配置特性减少了显式配置的需求,很多常用的配置会自动根据应用环境进行推断,简化了配置过程。
-
独立运行:Spring Boot 可以嵌入常用的 Web 服务器(如 Tomcat、Jetty),不再需要外部容器,因此应用可以直接运行。
-
简化 Maven 配置:Spring Boot 提供了许多默认的 Maven 和 Gradle 配置,开发人员无需手动配置依赖。
-
生产级特性:Spring Boot 提供了如健康检查、度量监控、日志管理等生产环境必备功能。
-
微服务支持:与 Spring Cloud 无缝集成,提供了开发和部署微服务架构所需的各类工具。
-
快速开发:使用 Spring Boot 的快速开发特性,可以非常快速地构建和启动应用。
-
不依赖外部配置:Spring Boot 封装了很多常用的 Spring 配置,避免了很多繁琐的 XML 配置和类配置。
-
-
1.3 Spring Boot 和 Spring 的关系
-
Spring 和 Spring Boot 是两个不同的概念,Spring 是一个全面的企业级应用框架,提供了广泛的功能,包括依赖注入(DI)、面向切面编程(AOP)、事务管理、数据访问等。Spring Boot 则是在 Spring 框架的基础上,针对开发过程中复杂的配置和部署问题,提供了自动配置和快速启动的解决方案。
-
Spring 是一个功能强大但需要大量手动配置的框架,开发人员需要自己设置数据源、Web 容器等各种配置。
-
Spring Boot 则是基于 Spring 的开箱即用框架,它通过自动配置、内嵌 Web 服务器等特性,极大简化了开发过程。
-
因此,Spring Boot 可以看作是 Spring 的一种扩展和简化版本,它在 Spring 框架的基础上增加了许多默认配置和特性,使得开发人员不必重复编写常见的配置,从而更专注于业务代码的开发。
-
-
-
2. Spring Boot 快速入门
-
2.1 创建第一个 Spring Boot 项目
- 新建项目
- 如果没有java8
- 修改一下服务器URL:https://start.aliyun.com/

- 选择依赖项 点击创建
- 因为 依赖项选的不多 直接启动就可以了
- 前端访问接口
- 新建项目
-
-
3. Spring Boot 配置管理
-
3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐yml
application.properties配置application.properties是基于键值对的配置文件,格式较为简单易懂。每一行表示一个配置项,使用=或:来分隔键和值。-
server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/lirui spring.datasource.username=root spring.datasource.password=root logging.level.org.springframework=INFO
-
application.yml配置application.yml是基于 YAML 格式的配置文件,支持层级结构,适合复杂配置,尤其是当有嵌套属性时更具可读性。-
server:port: 8080 spring:datasource:url: jdbc:mysql://localhost:3306/liruiusername: rootpassword: root logging:level:org.springframework: INFO
-
-
3.2 配置文件的环境管理
-
Spring Boot 支持通过 环境配置 来管理不同环境下的配置。例如,可以为开发、测试和生产环境分别配置不同的
application.properties或application.yml文件。 -
使用
application-{profile}.properties或application-{profile}.ymlSpring Boot 支持根据不同的 profile 使用不同的配置文件。例如,可以创建以下文件:-
application-dev.properties或application-dev.yml:开发环境的配置。 -
application-test.properties或application-test.yml:测试环境的配置。 -
application-prod.properties或application-prod.yml:生产环境的配置。
-
-
在
application.properties或application.yml中设置默认的 profile:-
spring.profiles.active=dev
-
-
配置文件优先级
-
application.properties或application.yml。 -
application-{profile}.properties或application-{profile}.yml(例如application-dev.properties)。 -
配置文件中的配置项会覆盖较低优先级的配置。
-
-
通过
@Value注解获取环境变量 Spring Boot 可以将配置文件中的属性注入到 Spring Bean 中。可以使用@Value注解来读取配置文件中的值。-
@Value("${server.port}") private int serverPort;
-
-
通过
@ConfigurationProperties绑定配置 如果配置项较多,可以通过@ConfigurationProperties注解将配置项绑定到 Java 对象中。-
@ConfigurationProperties(prefix = "spring.datasource") @Component public class DataSourceConfig {private String url;private String username;private String password;// getters and setters }
-
-
-
-
4. 常用的 Starter 依赖
-
4.1 spring-boot-starter-web
-
用于构建 Web 应用,包括 RESTful API 服务。默认集成了 Tomcat 作为 Web 容器,支持 Spring MVC 和 Jackson(JSON 处理)。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>
-
-
4.2 spring-boot-starter-data-jpa
-
用于集成 JPA 和 Hibernate,简化数据库操作,支持自动配置数据源。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId> </dependency>
-
-
4.3 spring-boot-starter-thymeleaf
-
集成 Thymeleaf 模板引擎,用于构建基于服务器端渲染的 Web 应用。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
-
-
4.4 spring-boot-starter-security
-
提供基本的安全功能,如认证和授权功能。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>
-
-
4.5 spring-boot-starter-logging
-
集成 SLF4J 和 Logback 提供日志功能,是默认的日志配置。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId> </dependency>
-
-
4.6 spring-boot-starter-test
-
用于集成测试框架,包括 JUnit、Mockito 和 Spring Test 等。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> </dependency>
-
-
4.7 spring-boot-starter-activemq
-
集成 ActiveMQ,用于消息队列功能。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId> </dependency>
-
-
4.8 spring-boot-starter-mail
-
用于集成邮件发送功能,配置了 JavaMail API。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency>
-
-
4.9 spring-boot-starter-cache
-
提供缓存功能,支持多种缓存实现(如 Redis、EhCache 等)。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId> </dependency>
-
-
4.10 spring-boot-starter-actuator
-
提供监控和管理功能,支持健康检查、指标、日志等功能。
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>
-
-
-
5. 内嵌服务器与项目打包
-
5.1 内嵌服务器
-
Spring Boot 支持多种内嵌服务器,默认情况下使用 Tomcat,但也可以选择其他服务器,如 Jetty 或 Undertow。
-
5.1.1 默认内嵌 Tomcat
-
Spring Boot 默认使用 Tomcat 作为内嵌 Web 服务器。只需要添加
spring-boot-starter-web依赖,Spring Boot 会自动引入 Tomcat 相关的依赖,并启动嵌入式的 Tomcat 服务器。 -
在默认情况下,Spring Boot 会使用 Tomcat 并将应用程序绑定到
localhost:8080。你可以通过修改application.properties或application.yml配置文件来调整服务器端口。
-
-
5.1.2 选择其他内嵌服务器
-
Jetty
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId> </dependency>
-
-
Undertow
-
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-undertow</artifactId> </dependency>
-
-
5.1.3 修改内嵌服务器的配置
-
如果需要定制内嵌服务器的配置,可以通过
application.properties或application.yml来修改。例如,修改 Tomcat 服务器的连接数或最大线程数: -
server.tomcat.max-threads=200
-
-
-
5.2 项目打包
-
Spring Boot 支持将项目打包成 JAR 文件或 WAR 文件,方便部署。默认情况下,Spring Boot 会将项目打包成一个 可执行 JAR 文件,可以直接通过命令行启动。
-
5.2.1 JAR 包打包
-
pom.xml
-
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins> </build>
-
-
执行打包
-
-
5.2.2 WAR包打包
-
如果你希望将应用打包为 WAR 文件(比如为了部署到外部 Tomcat 等容器中),需要在
pom.xml中进行一些配置调整,并实现SpringBootServletInitializer类。 -
pom.xml
-
<packaging>war</packaging><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> </dependencies>
-
-
启动类
-
@SpringBootApplication public class MyApplication extends SpringBootServletInitializer {public static void main(String[] args) {SpringApplication.run(MyApplication.class, args);}@Overrideprotected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {return builder.sources(MyApplication.class);} }
-
-
-
-
相关文章:
十五:java web(7)-- Spring Boot
目录 1. Spring Boot 简介 1.1 简介 1.2 Spring Boot 的特点 1.3 Spring Boot 和 Spring 的关系 2. Spring Boot 快速入门 2.1 创建第一个 Spring Boot 项目 3. Spring Boot 配置管理 3.1 application.properties 和 application.yml 配置 这两种都可以 好像现在更推荐…...
洛谷每日一题——P1036 [NOIP2002 普及组] 选数、P1045 [NOIP2003 普及组] 麦森数(高精度快速幂)
P1036 [NOIP2002 普及组] 选数 题目描述 [NOIP2002 普及组] 选数 - 洛谷 运行代码 #include <stdio.h> int n, k, a[25], t; int ss(int b) {int i;if (b < 2)return 0;for (i 2; i * i < b; i)if (b % i 0)return 0;return 1; } void dfs(int num, int sum, …...
OpenHarmony开源鸿蒙
OpenHarmony_百度百科 2024年4 月 1 日,开源鸿蒙 OpenHarmony 4.1 Release 版本于昨日发布,开发套件同步升级到 API 11 Release...
2024.11.4 STM32点灯和简单的数据收发
1.发送函数 HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout); 参数1: UART 处理结构体的指针,该结构体包含了 UART 的所有配置参数。 参数2:要发送的数据指针 参数3&…...
Android Studio jcenter 停止服务,改用mavenCentral
随着jcenter在2021年2月28日停止服务,Android和Java开发者需寻找替代方案。推荐使用MavenCentral,可借助国内镜像加速。此外,jitpack.io也是一个选项,但对于大型项目,自建Nexus或MavenCentral更合适。迁移步骤包括更新…...
EasyPOI使用详解
EasyPOI 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 文档:http://easypoi.mydoc.io/#categor…...
【云原生开发】K8S多集群资源管理平台架构设计
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
基于SpringBoot的城镇住房保障系统开发
2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…...
一文解秘Rust如何与Java互操作
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情,而 Java 也可以享受 Rust 语言特性的内存安全,所有权机制,无畏并发。…...
手机发展史介绍
手机,这个曾经在电影和科幻小说中出现的高科技产品,如今已经渗透进了我们生活的每个角落。从单纯的通讯工具到如今集成了通讯、娱乐、工作、社交等多种功能的智能终端,手机的发展史也是人类科技进步的缩影。本文将从手机的发展历程、技术革新…...
【ArcGISPro】单次将自己建立的工具箱添加至Arcpy中
新建工具箱 添加至Arcpy中 调用刚添加的工具箱...
docker镜像仓库常用命令
docker镜像仓库常用命令 docker logindocker logoutdocker pulldocker pushdocker searchdocker imagesdocker image inspectdocker tagdocker rmidocker image prunedocker savedocker loaddocker history docker login 语法: docker login [options] [server] 功能ÿ…...
springboot 传统应用程序,适配云原生改造
概述 2024年传统应用程序上云,改造方案 1、mysql 云环境高可用方案 2、redis 云环境高可用方案 3、nginx 云环境高可用方案 4、应用 云环境高可用方案1、mysql 云环境高可用方案 1.1 你先了解 1.1.1 你先了解“mysql高可用方案” 主从复制(Master-S…...
D61【python 接口自动化学习】- python基础之数据库
day61 数据库定义 学习日期:20241107 学习目标:MySQL数据库-- 130:MySQL入门使用 学习笔记: 在命令提示符内先试用MySQL 使用图形化工具操作MySQL DBeaver安装 DBeaver连接MySQL 总结 MySQL安装成功后,可以使用命…...
数据库期末考试简答题
1.试述数据、数据库、数据库管理系统、数据库系统的概念。 答:(1)数据是数据库中存储的基本对象,是描述事物的符号记录。数据有多种表现形式,它们都可以经过数字化后存入计算机。数据的种类有数字、文字、…...
Java[面试题]-真实面试
1.什么是IOC和AOP?了解么? IOC(控制反转)和AOP(面向切面编程) 1. IOC(控制反转) 概念 IOC(Inversion of Control)是面向对象编程中的一个设计原则…...
HTML5新增多媒体支持
一、引言 在当今数字化时代,丰富的多媒体内容对于网页的吸引力和用户体验至关重要。HTML5 的出现为网页带来了强大的多媒体支持,尤其是在音频和视频方面,为开发者和用户带来了全新的可能性。 二、音频audio标签 2.1 定义与属性详解 <a…...
K8S群集调度二
一、污点(Taint) 和 容忍(Tolerations) 1.1、污点(Taint) 设置在node上是对pod的一种作用 节点的亲和性,是Pod的一种属性(偏好或硬性要求),它使Pod被吸引到一类特定的节点 而Taint 则相反,它使节点能够排斥一类特…...
43.第二阶段x86游戏实战2-提取游戏里面的lua
免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 本人写的内容纯属胡编乱造,全都是合成造假,仅仅只是为了娱乐,请不要…...
debian系统安装qt的时候 显示xcb相关文件缺失
如果是安装之后的问题 我们可以选择使用ldd的命令查看当前依赖的so那些文件确实 ldd /home/yinsir/Qt/5.15.2/gcc_64/plugins/platforms/libqxcb.so 本人在进行打包的时候 出现则会个报错 ERROR: ldd outputLine: “libxcb-util.so.1 > not found” ERROR: for binary: “/…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
【解密LSTM、GRU如何解决传统RNN梯度消失问题】
解密LSTM与GRU:如何让RNN变得更聪明? 在深度学习的世界里,循环神经网络(RNN)以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而,传统RNN存在的一个严重问题——梯度消失&#…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式
今天是关于AI如何在教学中增强学生的学习体验,我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育,这并非炒作,而是已经发生的巨大变革。教育机构和教育者不能忽视它,试图简单地禁止学生使…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...




