SpringBoot - [01] 概述
一、什么是SpringBoot
是一个基于Spring框架的快速开发应用程序的工具,设计目的是为了简化Spring应用的创建、运行、调试、部署等开发过程,使开发人员能够更快地创建独立的、生产就绪的Spring应用程序。
采用了“约定优于配置”的原则,通过大量的默认配置来减少开发人员需要手动配置的步骤,从而简化了Spring框架中所需的大量且繁琐的配置文件。还集成了大量常用的第三方库配置,使得这些库在Spring Boot应用中几乎可以零配置开箱即用,开发人员只需关注业务配置,无需过多关注底层配置。
SpringBoot包含了诸如嵌入式Web服务器、自动配置、命令行界面等开箱即用的特性,使得开发人员能够更加容器地开发和部署应用程序,并且可以与其他Spring框架的组件进行无缝集成。
此外,SpringBoot应用可以独立运行,使用Jar包的形式即可启动,无需复杂的部署过程。总的来说,SpringBoot为Spring应用程序的开发提供了更加简单、快速、灵活的方式,使开发人员能够更专注于业务逻辑的开发,提高开发效率。
二、什么是微服务
微服务是一种架构风格,要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合;可以通过http的方式进行互通。
单体应用架构(all in one)是指,我们将一个应用中的所有应用服务都封装在一个应用中。无论是ERP、CRM或是其他什么系统,你都把数据库访问,web访问,等等各个功能放到一个war包内。
这样做的好处是易于开发和测试;也十分方便部署;当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做个负载均衡就可以了。
单体应用架构的缺点是,哪怕我要修改一个非常小的地方,我都需要停掉整个服务,重新打包、部署这个应用war包。特别是对于一个大型应用,我们不可能把所有内容都放在一个应用里面,我们如何维护、如何分工合作都是问题。
all in one的架构方式,我们把所有的功能单元放在一个应用里面。然后我们把整个应用部署到服务器上。如果负载能力不行,我们将整个应用进行水平复制,进行扩展,然后再负载均衡。
所谓微服务架构,就是打破之前all in one的架构方式,把每个功能元素独立出来。把独立出来的功能元素的动态组合(活字印刷术),需要的功能元素才去拿来组合,需要多一些时可以整合多个功能元素。所以微服务架构是对功能元素进行复制,而没有对整个应用进行复制。
这样做的好处是:
1、节省了调用资源。
2、每个功能元素的服务都是一个可替换的、可独立升级的软件代码。
三、SpringBoot的特点
- 遵循“约定优于配置”的原则,只需要很少的配置或使用默认的配置。
- 能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件。
- 提供定制化的启动器Starters,简化Maven配置,开箱即用。
- 纯Java配置,没有代码生成,也不需要XML配置。
- 提供了生产级的服务监控方案,如安全监控、应用监控、健康检测等。
四、SpringBoot的主要特性
4.1、依赖管理
spring-boot-starter-parent
的父pom是spring-boot-dependencies
。
在spring-boot-dependencies.pom
里面包含了开发中常用的版本集合。
如果我们只是使用默认的版本,那么引入dependency
即可;
但是如果我们需要自定义依赖版本,那么额外还需要在<properties>
标签中引入自定义的版本。
<properties>
<activemq.version>5.16.2</activemq.version>
......
</properties>
4.2、场景Starter
需要引入什么场景的starter,就会将一整套场景的jar包都引入进来,不需要关注多jar包直接的版本号是否兼容彼此,Spring可以自动处理好各jar包之间版本的兼容性问题。
4.3、自动配置AutoConfiguration
SpringBoot所有的自动配置功能都在spring-boot-autoconfigure包里面。
五、Spring如何简化Java开发的
(1)基于POJO的轻量级和最小侵入性编程;
(2)通过IOC,依赖注入(DI)和面向接口实现松耦合;
(3)基于切面(AOP)和惯例进行声明式编程;
(4)通过切面和模板减少样式代码;
— 要养成终身学习的习惯 —
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!