我的编程空间,编程开发者的网络收藏夹
学习永远不晚

有了Spring为什么还需要SpringBoot呢

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

有了Spring为什么还需要SpringBoot呢

目录

一、Spring缺点分析

二、什么是Spring Boot

三、Spring Boot的核心功能

3.1 起步依赖

3.2 自动装配


一、Spring缺点分析

1. 配置文件和依赖太多了!!!

spring是一个非常优秀的轻量级框架,以IOC(控制反转)和AOP(面向切面)为思想内核,极大简化了JAVA企业级项目的开发。虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。使用Spring进行项目开发需要在配置文件中写很多代码,所有这些配置都代表了开发时的损耗。

就比如下面这个图片就反映了进行数据源配置的时候配置文件有多繁琐!!!

除此之外,Spring项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。比如Spring5.0以上只能使用Junit4.12以上的版本。 

下图就很好地诠释了spring框架开发的pom文件添加依赖的恐怖之处:

总结
Spring的缺点:

  • 配置过于繁琐。
  • 引入的依赖过多,版本控制复杂

二、什么是Spring Boot

SpringBoot对Spring的缺点进行改善和优化,基于约定大于配置的思想,简化了Spring的开发,所谓简化是指简化了Spring中大量的配置文件和繁琐的依赖引入。所以SpringBoot是一个服务于框架的框架,它不是对Spring功能的增强,而是提供了一种快速使用Spring框架的方式。

SpringBoot的优点:

  • 配置简单
  • 依赖引入简单
  • 提供了一些大型项目的非功能特性,如嵌入式服务器,安全指标,健康监测等。 

三、Spring Boot的核心功能

Spring Boot的核心功能就是起步依赖和自动装配

3.1 起步依赖

SpringBoot的依赖是基于功能的,而不是普通项目的依赖是基于JAR包的。SpringBoot将完成一个功能所需要的所有坐标打包到一起,并完成了版本适配,我们在使用某功能时只需要引入一个依赖即可。

其原理就是Maven的传递依赖,比如说a依赖b,b依赖c,c依赖d,那么如果我们引入了a依赖,剩下的b,c,d的依赖都会被加载进来。

在Spring Boot中,主要通过引入了父依赖,我们点进去看看父依赖引入了什么

我们可以看到里面继续引入了一个父依赖,我们ctrl再点击看看 

Ok,我们可以看到这里声明了许多了依赖的版本,所以这也是Spring Boot引入依赖时不用声明的版本的原因,在父依赖里面都已经全部定义好了。

3.2 自动装配

     SpringBoot项目自动提供最优配置,同时可以修改默值满足特定的要求。

查看注解 @SpringBootApplication 的源码

@SpringBootConfiguration等同于@Configuration,代表这是一个SpringBoot的配置类,在spring中叫法是Configuration而已。

@Enable Auto Configuration代表开启自动配置功能。

让我们+ctrl点击@Enable Auto Configuration,看看里面有什么

从这里我们只能看出@Import注解导入了AutoConfigurationImportSelector类,现在我们再+ctrl看看AutoConfigurationImportSelector里面写了什么。

主要就是上面这个getCadicateConfigurations方法,里面调用了SpringLoaderFactories.loadFactoryNames方法,从调用改方法返回值是一个configurations集合,就可以猜出该方法主要作用就是获取所有的配置类。并且在后面有加了一句:

No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.

翻译:在META-INF/spring.factories中没有找到自动配置类。如果使用的是自定义打包,请确保该文件是正确的。

也就意味着该方法主要在META-INF/spring.factories中找到需要加载的配置类,读取所有配置类的名称:

让我们查看META-INF/spring.factories文件有什么?

上面配置信息就是存在大量以Configuration结尾的类名称,这里类就是存有自动配置信息的类,在SpringBootApplication获取这些类的名称后再进行加载。

让我们以ServletWebServerFactoryAutoConfiguration类为例分析源码

这里又出现了一个自动加载:@EnableConfigurationProperties({ServerProperties.class}),代表的是自动加载服务器配置类ServerProperties,再让我们ctrl点进去看看

prefix = "server",代表了Spring Boot配置文件的前缀为server,SpringBoot会将以server前缀开始的属性自动映射到该类字段中,就比如我们配置网络端口的时候设置server.port = 8080,

如果我们没有进行配置,则Spring Boot会读取默认配置信息,而默认配置信息就是放在spring-configuration-metadata.json文件中,如下图:

该文件也是存放所有的默认配置信息!!!

总结

通过起步依赖和自动装配使得进行开发时省去了很多麻烦,不用进行版本的管理,以及进行各种配置,这里在SpringBoot中全部通过自动装配一步到位。

来源地址:https://blog.csdn.net/qq_53317005/article/details/132957942

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

有了Spring为什么还需要SpringBoot呢

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

有了ChatGPT编程是否还需要那么多库

这篇文章主要介绍了有了ChatGPT编程是否还需要那么多库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇有了ChatGPT编程是否还需要那么多库文章都会有所收获,下面我们一起来看看吧。瀑布流展示图片的新需求我已
2023-07-05

云服务器就是不用买电脑了嘛为什么还要收费呢

云服务器是一种提供在线计算服务的设备,它通常需要付费购买。与其他计算设备类似,云服务器的成本通常包括带宽、存储和服务器硬件设备等方面的费用,而不仅仅是购买价格。尽管云服务器提供了更多的灵活性和便利性,但它们的价格也相对较高,而且通常需要付费使用,例如按年付费,以支持更长时间的使用。此外,许多云服务器还支持多用户或多租户功能,因此用户需要与其他用户共享计算资源和带宽,可能产生额外的成本。因此,尽管云服务器是一个...
2023-10-26

云服务器不限速吗为什么还要收费呢

另一方面,也有人认为,云服务器本质上是一种软件服务,而且是免费的,因此应该收费。他们认为,云服务器是一种依赖于技术和服务的服务,而不是硬件和软件的商品,因此收费是合理的。无论如何,云服务器的确提供了一种方便的服务方式,使得用户可以通过互联网随时随地访问他们的数据和应用程序。云服务器提供商可以根据用户的需求提供不同的服务
2023-10-27

为什么linux中不需要磁盘碎片整理呢

这篇文章将为大家详细讲解有关为什么linux中不需要磁盘碎片整理呢,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。绝大多数的电脑用户都是在使用windows系统,我们都知道当电脑用起来很慢的时候,其中的一个
2023-06-13

做亚马逊为什么需要服务器账号呢

亚马逊是一个全球性的电商平台,为了保证平台的稳定性和安全性,需要使用服务器来存储和处理大量的数据和信息。服务器账号是用来管理和控制服务器的权限和访问权限的账号,只有拥有服务器账号的用户才能够访问和管理服务器上的数据和信息。在做亚马逊的业务时,需要使用服务器账号来上传和管理商品信息、订单信息、库存信息等数据,以及进行数据分析和处理。同时,服务器账号还可以用来管理亚马逊的广告和营销活动,以及进行网站优...
2023-10-27

深入了解Golang为什么需要超时控制

本文将介绍为什么需要超时控制,然后详细介绍Go语言中实现超时控制的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
2023-05-19

Spring为什么需要三级缓存解决循环依赖

今天小编给大家分享一下Spring为什么需要三级缓存解决循环依赖的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。bean生命周
2023-06-29

大企业需要安装SSL证书能理解,为什么中小企业也需要呢?

大企业需要安装SSL证书能理解,为什么中小企业也需要呢?在今天的互联网环境下,网络安全的重要性日益凸显。SSL证书是为网站提供安全保障的重要手段之一,它对于大企业的意义与价值已经被大多数人理解并接受。然而,其实对于中小企业来说,SSL证书同样重要性。下面将介绍,为什么中小企业也需要安装SSL证书。
大企业需要安装SSL证书能理解,为什么中小企业也需要呢?
2024-02-29

亚马逊云服务器免费为什么还有账单呢

免费试用期和折扣码可以让用户更容易地尝试和使用云服务,同时也有助于推广和增加客户群。但是,如果您没有选择使用免费试用期或折扣码,那么您将需要支付费用来购买您的云服务。在使用云服务时,用户需要按照合同要求支付服务费用,这包括基础设施、带宽、存储和安全等方面的费用。如果您选择付费账户,您需要为您的云服务支付服务费用。这些费
2023-10-27

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录