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

十五: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.propertiesapplication.yml 文件。

      • 使用 application-{profile}.propertiesapplication-{profile}.yml Spring Boot 支持根据不同的 profile 使用不同的配置文件。例如,可以创建以下文件:

        • application-dev.propertiesapplication-dev.yml:开发环境的配置。

        • application-test.propertiesapplication-test.yml:测试环境的配置。

        • application-prod.propertiesapplication-prod.yml:生产环境的配置。

      • application.propertiesapplication.yml 中设置默认的 profile

        • spring.profiles.active=dev
          
      • 配置文件优先级

        • application.propertiesapplication.yml

        • application-{profile}.propertiesapplication-{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,但也可以选择其他服务器,如 JettyUndertow

      • 5.1.1 默认内嵌 Tomcat

        • Spring Boot 默认使用 Tomcat 作为内嵌 Web 服务器。只需要添加 spring-boot-starter-web 依赖,Spring Boot 会自动引入 Tomcat 相关的依赖,并启动嵌入式的 Tomcat 服务器。

        • 在默认情况下,Spring Boot 会使用 Tomcat 并将应用程序绑定到 localhost:8080。你可以通过修改 application.propertiesapplication.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.propertiesapplication.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 日&#xff0c;开源鸿蒙 OpenHarmony 4.1 Release 版本于昨日发布&#xff0c;开发套件同步升级到 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&#xff1a; UART 处理结构体的指针&#xff0c;该结构体包含了 UART 的所有配置参数。 参数2&#xff1a;要发送的数据指针 参数3&…...

Android Studio jcenter 停止服务,改用mavenCentral

随着jcenter在2021年2月28日停止服务&#xff0c;Android和Java开发者需寻找替代方案。推荐使用MavenCentral&#xff0c;可借助国内镜像加速。此外&#xff0c;jitpack.io也是一个选项&#xff0c;但对于大型项目&#xff0c;自建Nexus或MavenCentral更合适。迁移步骤包括更新…...

EasyPOI使用详解

EasyPOI 简介 easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 文档&#xff1a;http://easypoi.mydoc.io/#categor…...

【云原生开发】K8S多集群资源管理平台架构设计

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…...

基于SpringBoot的城镇住房保障系统开发

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…...

一文解秘Rust如何与Java互操作

本博客所有文章除特别声明外&#xff0c;均采用CC BY-NC-SA 4.0许可协议。转载请注明来自 唯你 使用场景 JAVA 与 Rust 互操作让 Rust 可以背靠 Java 大生态来做更多事情&#xff0c;而 Java 也可以享受 Rust 语言特性的内存安全&#xff0c;所有权机制&#xff0c;无畏并发。…...

手机发展史介绍

手机&#xff0c;这个曾经在电影和科幻小说中出现的高科技产品&#xff0c;如今已经渗透进了我们生活的每个角落。从单纯的通讯工具到如今集成了通讯、娱乐、工作、社交等多种功能的智能终端&#xff0c;手机的发展史也是人类科技进步的缩影。本文将从手机的发展历程、技术革新…...

【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] 功能&#xff…...

springboot 传统应用程序,适配云原生改造

概述 2024年传统应用程序上云&#xff0c;改造方案 1、mysql 云环境高可用方案 2、redis 云环境高可用方案 3、nginx 云环境高可用方案 4、应用 云环境高可用方案1、mysql 云环境高可用方案 1.1 你先了解 1.1.1 你先了解“mysql高可用方案” 主从复制&#xff08;Master-S…...

D61【python 接口自动化学习】- python基础之数据库

day61 数据库定义 学习日期&#xff1a;20241107 学习目标&#xff1a;MySQL数据库-- 130&#xff1a;MySQL入门使用 学习笔记&#xff1a; 在命令提示符内先试用MySQL 使用图形化工具操作MySQL DBeaver安装 DBeaver连接MySQL 总结 MySQL安装成功后&#xff0c;可以使用命…...

数据库期末考试简答题

1&#xff0e;试述数据、数据库、数据库管理系统、数据库系统的概念。 答&#xff1a;&#xff08;1&#xff09;数据是数据库中存储的基本对象&#xff0c;是描述事物的符号记录。数据有多种表现形式&#xff0c;它们都可以经过数字化后存入计算机。数据的种类有数字、文字、…...

Java[面试题]-真实面试

1.什么是IOC和AOP&#xff1f;了解么&#xff1f; IOC&#xff08;控制反转&#xff09;和AOP&#xff08;面向切面编程&#xff09; 1. IOC&#xff08;控制反转&#xff09; 概念 IOC&#xff08;Inversion of Control&#xff09;是面向对象编程中的一个设计原则&#xf…...

HTML5新增多媒体支持

一、引言 在当今数字化时代&#xff0c;丰富的多媒体内容对于网页的吸引力和用户体验至关重要。HTML5 的出现为网页带来了强大的多媒体支持&#xff0c;尤其是在音频和视频方面&#xff0c;为开发者和用户带来了全新的可能性。 二、音频audio标签 2.1 定义与属性详解 <a…...

K8S群集调度二

一、污点(Taint) 和 容忍(Tolerations) 1.1、污点(Taint) 设置在node上是对pod的一种作用 节点的亲和性&#xff0c;是Pod的一种属性&#xff08;偏好或硬性要求&#xff09;&#xff0c;它使Pod被吸引到一类特定的节点 而Taint 则相反&#xff0c;它使节点能够排斥一类特…...

43.第二阶段x86游戏实战2-提取游戏里面的lua

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…...

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: “/…...

得物多模态大模型在重复商品识别上的应用和架构演进

重复商品治理介绍 根据得物的平台特性&#xff0c;同一个商品在平台上不能出现多个链接&#xff0c;原因是平台需要保证一品一链的特点&#xff0c;以保障商品的集中竞价&#xff0c;所以说一个商品在整个得物平台上只能有一个商详链接&#xff0c;因此我们需要对一品多链的情…...

基于 SSM(Spring + Spring MVC + MyBatis)框架构建电器网上订购系统

基于 SSM&#xff08;Spring Spring MVC MyBatis&#xff09;框架构建电器网上订购系统可以为用户提供一个方便快捷的购物平台。以下将详细介绍该系统的开发流程&#xff0c;包括需求分析、技术选型、数据库设计、项目结构搭建、主要功能实现以及前端页面设计。 需求分析 …...

应用插件化及其进程关系梳理

插件应用的AndroidManifest.xml <manifest xmlns:android"http://schemas.android.com/apk/res/android"coreApp"true"package"com.demo.phone"android:sharedUserId"android.uid.phone"><uses-sdk android:minSdkVersion&q…...

Odoo:免费开源的医药流通行业信息化解决方案

文 / 开源智造Odoo亚太金牌服务 方案概述 开源智造Odoo免费开源ERP提供面向医药批发采、供、销业财一体化&#xff0c;及直接面向消费者的门店终端、全渠道管理、营销管理以及GSP合规管理解决方案&#xff0c;提升企业运营效率和全业务链条的数字化管控、追溯能力。 行业的最新…...

系统架构设计师论文:大数据Lambda架构

论文一:大数据Lambda架构 1简要说明你参与开发的软件项目,以及你所承担的主要工作 2 lamada体系架构将数据流分为批处理层(Batch Layer)、加速层(Speed Layer)、服务层(Serving Layer)。简要叙述这三个层次的用途和特点 3 详细阐述你参与开发的软件项目是如何基于lamada…...

亚信安全新一代WAF:抵御勒索攻击的坚固防线

近年来&#xff0c;勒索攻击已成为黑客的主要攻击手段。新型勒索攻击事件层出不穷&#xff0c;勒索攻击形势愈发严峻&#xff0c;已经对全球制造、金融、能源、医疗、政府组织等关键领域造成严重危害。如今&#xff0c;勒索攻击手段日趋成熟、攻击目标愈发明确&#xff0c;模式…...

Flutter 中的那些设计模式的写法(持续更新)

前言 我们都知道设计模式是相同的&#xff0c;同一种设计模式的理念不会因为语言不同而会有所改变&#xff0c;但是由于语法的差异&#xff0c;设计模式的写法也有所差异&#xff0c;本文会介绍一些flutter中常用设计模式的写法以及使用场景。 常见的设计模式有23种&#xff0…...

【提效工具开发】Python功能模块执行和 SQL 执行 需求整理

需求梳理 背景 当前我们在IDE或MySQL查询工具中只能进行个人使用&#xff0c;缺乏共享功能&#xff0c;且在查询及数据统计上有一定的不便。为了改善这种情况&#xff0c;计划搭建一个Web平台&#xff0c;通过后台交互来提升效率。此平台需要兼容Python工具和SQL工具的管理、执…...

Linux系列-进程的状态

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 操作系统就是计算机领域的哲学&#xff0c;是为了保证在所有情况下都适用&#xff0c;加载到内存叫做新建状态。 并行和并发 计算机同时进行多个任务&#xff0c;在用户感知的…...

SpringBoot项目中常用的一些注解

一、核心注解 SpringBootApplication 作用&#xff1a;标注一个主程序类&#xff0c;表明这是一个Spring Boot应用程序的入口。说明&#xff1a;这是一个复合注解&#xff0c;组合了Configuration、EnableAutoConfiguration和ComponentScan。 EnableAutoConfiguration 作用&…...