十五: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);}
            }
            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59736.shtml

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

相关文章

关于打开网页非常慢的解决方法

方法一&#xff1a;刷新dns缓存 ipconfig /flushdns方法二&#xff1a;许多网站&#xff0c;太落后&#xff0c;不支持ipv6&#xff0c;所以关闭ipv6即可

JDK1.5 java代码打包jar HmacSha256

文章目录 demo地址背景实现编写代码编译class文件打包 JAR 文件执行生成的 JAR 文件辅助验证方式 常见问题和解决方法常规生成jar方案maven插件idea工具 demo地址 https://github.com/xiangge-zx/HmacSha256 背景 最近接到一个需求,做一个可以用来HmacSha256加密的小工具&am…

Go八股(Ⅳ)***slice,string,defer***

***slice&#xff0c;string&#xff0c;defer*** 1.slice和arry的区别 arry&#xff1a; Go语言中arry即为数据的一种集合&#xff0c;需要在声明时指定容量和初值&#xff0c;且一旦声明就长度固定&#xff0c;访问时按照索引访问。通过内置函数len可以获取数组中的元素个…

Win系统通过命令行查看笔记本电池损耗/寿命/健康

在 Windows 10/11 系统中&#xff0c;可以通过指令查看笔记本电池的寿命情况&#xff0c;方法如下&#xff1a; 0&#xff0c;打开cmd/终端 键盘快捷键&#xff1a;Win R&#xff0c;然后输入cmd&#xff0c;点击【确定】 1&#xff0c;执行命令 在命令行中输入下面指令并按…

103 - Lecture 1

Introduction to Database 一、Introduction to Database Systems 1. 数据的定义 What is Data? EX: data could be a docx file storing your project status report; data could be a spreadsheet containing information • 数据只有在设计的场景中才有意义。&#xff…

【大数据学习 | kafka高级部分】kafka中的选举机制

controller的选举 首先第一个选举就是借助于zookeeper的controller的选举 第一个就是controller的选举&#xff0c;这个选举是借助于zookeeper的独享锁实现的&#xff0c;先启动的broker会在zookeeper的/contoller节点上面增加一个broker信息&#xff0c;谁创建成功了谁就是主…

关于几种卷积

1*1卷积 分组卷积&深度可分离卷积 空洞卷积、膨胀卷积 转置卷积 https://zhuanlan.zhihu.com/p/80041030 https://yinguobing.com/separable-convolution/#fn2 11的卷积可以理解为对通道进行加权&#xff0c;对于一个通道来说&#xff0c;每个像素点加权是一样的&am…

OCR、语音识别与信息抽取:免费开源的AI平台在医疗领域的创新应用

一、系统概述 在医疗行业中&#xff0c;大量数据来自手写病历、医学影像报告、患者对话记录等非结构化数据源。这些数据常常存在信息碎片化和管理困难的问题&#xff0c;给医务人员的工作带来了不便。思通数科AI多模态能力平台正是为了解决这一行业痛点而生&#xff0c;产品集…

Git进阶(十八):git rebase详解

文章目录 一、前言二、rebase 图解三、应用示例四、重建提交历史五、rebase VS merge六、拓展阅读 一、前言 rebase 使用方法 git rebase [基节点] git rebase [基节点] [待变基节点]rebase后面的参数可以是两个&#xff0c;也可以是一个&#xff0c;当rebase为一个参数的时…

【React】条件渲染——逻辑与运算符

条件渲染——逻辑与&&运算符 你会遇到的另一个常见的快捷表达式是 JavaScript 逻辑与&#xff08;&&&#xff09;运算符。在 React 组件里&#xff0c;通常用在当条件成立时&#xff0c;你想渲染一些 JSX&#xff0c;或者不做任何渲染。 function Item({ nam…

《深度学习》——深度学习基础知识(全连接神经网络)

文章目录 1.神经网络简介2.什么是神经网络3.神经元是如何工作的3.1激活函数3.2参数的初始化3.2.1随机初始化3.2.2标准初始化3.2.3Xavier初始化&#xff08;tf.keras中默认使用的&#xff09;3.2.4He初始化 4.神经网络的搭建4.1通过Sequential构建神经网络4.2通过Functional API…

Bsin-kb-agent:企业级AI知识库

企业级AI知识库 Bsin-kb-agent 是基于BsinPaaS开源框架和大语言模型构建的企业知识库应用&#xff0c;借鉴langchain的框架思想&#xff0c;引入langchian4j组件&#xff0c;微前端微服务的架构设计&#xff0c;可快速助您构建和体验端到端的AI知识库应用。 应用场景 企业微…

每日OJ题_牛客_春游_贪心+数学_C++_Java

目录 牛客_春游_贪心数学 题目解析 C代码 Java代码 牛客_春游_贪心数学 春游 描述&#xff1a; 盼望着&#xff0c;盼望着&#xff0c;东风来了&#xff0c;春天脚步近了。 值此大好春光&#xff0c;老师组织了同学们出去划船&#xff0c;划船项目收费如下&#xff1a;…

容器化技术入门:Docker详解

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 容器化技术入门&#xff1a;Docker详解 容器化技术入门&#xff1a;Docker详解 容器化技术入门&#xff1a;Docker详解 引言 Doc…

数据挖掘实战-基于SARIMA时间序列模型预测Netflix股票未来趋势

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Java:多态的调用

1.什么是多态 允许不同类的对象对同一消息做不同的响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。&#xff08;发送消息就是函数调用&#xff09;。多态使用了一种动态绑定&#xff08;dynamic binding&#xff09;技术&#xff0c;指在执行期间判断所引用…

HbuildderX运行到手机或模拟器的Android App基座识别不到设备 mac

寻找模拟器 背景&#xff1a; 运行的是h5&#xff0c;模拟器是网易MuMu。 首先检查一下是否配置dab环境&#xff0c;adb version 配置一下hbuilderX的adb&#xff1a; 将命令输出的路径配置到hbuilderx里面去&#xff0c;然后重启下HbuilderX。 开始安装基座…一直安装不…

小程序 CRM 运营系统:提升用户体验的新利器

在当今数字化时代&#xff0c;小程序以其便捷、高效的特点迅速成为企业与用户互动的重要平台。而将客户关系管理&#xff08;CRM&#xff09;运营系统融入小程序中&#xff0c;更是为企业带来了全新的机遇与挑战。那么&#xff0c;如何构建一个成功的小程序CRM运营系统呢&#…

【362】基于springboot的在线租房和招聘平台

摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解决一些老技术的弊端问题。因为传统在线租房和招聘平台信息管理难度大&#xff0c;容错率低&…

华为Mate70前瞻,鸿蒙NEXT正式版蓄势待发,国产系统迎来关键一战

Mate 70系列要来了 上个月&#xff0c;vivo、小米、OPPO、荣耀等众多智能手机制造商纷纷发布了他们的年度旗舰产品&#xff0c;手机行业内竞争异常激烈。 同时&#xff0c;华为首席执行官余承东在其个人微博上透露&#xff0c;Mate 70系列将标志着华为Mate系列手机达到前所未有…