返回顶部
首页 > 资讯 > 后端开发 > JAVA >有了Spring为什么还需要SpringBoot呢
  • 459
分享到

有了Spring为什么还需要SpringBoot呢

springspringbootjavamaven原力计划 2023-09-23 10:09:04 459人浏览 八月长安
摘要

目录 一、Spring缺点分析 二、什么是Spring Boot 三、Spring Boot的核心功能 3.1 起步依赖 3.2 自动装配 一、spring缺点分析 1. 配置文件和依赖太多了!!! spring是一个非常优秀的轻

目录

一、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

--结束END--

本文标题: 有了Spring为什么还需要SpringBoot呢

本文链接: https://lsjlt.com/news/416326.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 有了Spring为什么还需要SpringBoot呢
    目录 一、Spring缺点分析 二、什么是Spring Boot 三、Spring Boot的核心功能 3.1 起步依赖 3.2 自动装配 一、Spring缺点分析 1. 配置文件和依赖太多了!!! spring是一个非常优秀的轻...
    99+
    2023-09-23
    spring spring boot java maven 原力计划
  • JavaScript 中有了Object 为什么还需要 Map 呢
    目录一、别把对象当 Map1、可能通过原型链访问到未定义的属性2、对象的 Key 只能是字符串二、使用 Map1、Map 常用操作2、遍历 Map3、Map 中判断 key 相等4、...
    99+
    2024-04-02
  • JavaScript 和 Django 都有了,为什么还需要 PHP 索引?
    随着 Web 技术的不断发展,前端 JavaScript 和后端 Django 成为了许多开发者的首选。但是,许多人可能忽略了 PHP 的重要性,特别是在处理大量数据时。本文将探讨为什么在某些情况下仍然需要 PHP 索引。 首先,让我们回顾...
    99+
    2023-08-04
    索引 django javascript
  • 既然有MySQL了,为什么还要有MongoDB?
    目录 一、基本概念走起 二、MongoDB的主要特征 三、MongoDB优缺点,扬长避短 1、优点 2、缺点 ...
    99+
    2023-09-04
    mongodb mysql 数据库
  • 有了 IP 地址,为什么还要用 MAC 地址?
    我认为,IP地址和MAC地址可以类比生活中寄快递的过程。 在整个网络中数据被封装成数据报文进行发送,就像我们生活中寄快递时将物品放进包裹中。而数据在路由器之间的跳转也可以看作是不同地区快递小哥对物流的...
    99+
    2023-08-31
    tcp/ip 网络 mac地址
  • Spring bean为什么需要依赖注入
    目录具体步骤:样例1:样例2:Spring单例模式和原型模式一、单例模式二、原型模式思考 为什么需要依赖注入总结具体步骤: 1.创建一个maven项目 spring-day1-con...
    99+
    2024-04-02
  • 网站上线除了备案还需要什么
    网站上线除了备案还需要具备以下条件购买网站域名域名就是用户通过互联网访问网站的地址。可以选择一家提供域名注册服务的平台,查询想要注册的域名是否被注册,如果没有被注册,进行注册购买即可。选择网站空间网站空间就是用于存放网站数据的地方。空间产品...
    99+
    2024-04-02
  • 有了ChatGPT编程是否还需要那么多库
    这篇文章主要介绍了有了ChatGPT编程是否还需要那么多库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇有了ChatGPT编程是否还需要那么多库文章都会有所收获,下面我们一起来看看吧。瀑布流展示图片的新需求我已...
    99+
    2023-07-05
  • 为什么需要Docker?
    前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y估计大家也可能听过Docker这项技术(在论坛上、招聘技能上、交流群上等等),要是不了解Docke...
    99+
    2023-06-04
  • 云服务器就是不用买电脑了嘛为什么还要收费呢
    云服务器是一种提供在线计算服务的设备,它通常需要付费购买。与其他计算设备类似,云服务器的成本通常包括带宽、存储和服务器硬件设备等方面的费用,而不仅仅是购买价格。 尽管云服务器提供了更多的灵活性和便利性,但它们的价格也相对较高,而且通常需要...
    99+
    2023-10-26
    买电脑 服务器
  • 下载python还需要下载什么
    下载 python 需以下组件:python 官方安装程序:含 python 解释器和基本组件。ide(可选):提供代码编辑、调试等功能。库和包(可选):通过 pip 安装,用于执行特定...
    99+
    2024-04-02
  • 云服务器不限速吗为什么还要收费呢
    另一方面,也有人认为,云服务器本质上是一种软件服务,而且是免费的,因此应该收费。他们认为,云服务器是一种依赖于技术和服务的服务,而不是硬件和软件的商品,因此收费是合理的。 无论如何,云服务器的确提供了一种方便的服务方式,使得用户可以通过互...
    99+
    2023-10-27
    服务器
  • 为什么要加EventQueue.invokeLater呢
    为什么要加EventQueue.invokeLater呢,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。比如下面的程序:import java.awt.*;impo...
    99+
    2023-06-03
  • 为什么linux中不需要磁盘碎片整理呢
    这篇文章将为大家详细讲解有关为什么linux中不需要磁盘碎片整理呢,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。绝大多数的电脑用户都是在使用windows系统,我们都知道当电脑用起来很慢的时候,其中的一个...
    99+
    2023-06-13
  • 做亚马逊为什么需要服务器账号呢
    亚马逊是一个全球性的电商平台,为了保证平台的稳定性和安全性,需要使用服务器来存储和处理大量的数据和信息。服务器账号是用来管理和控制服务器的权限和访问权限的账号,只有拥有服务器账号的用户才能够访问和管理服务器上的数据和信息。 在做亚马逊的业...
    99+
    2023-10-27
    亚马逊 账号 服务器
  • 深入了解Golang为什么需要超时控制
    目录1. 简介2. 为什么需要超时控制3. 超时控制的方法 3.1 time包实现超时控制    3.2 context实现超时控制...
    99+
    2023-05-19
    Golang超时控制 Go 超时控制 Golang超时
  • 为什么Java工程师需要了解Git和LeetCode?
    随着互联网技术的不断发展,Java工程师已经成为了现代IT行业中最热门的职业之一。作为一名Java工程师,不仅需要掌握Java语言的基础知识,还需要掌握一些相关的技术工具,例如Git和LeetCode。那么,为什么Java工程师需要了解Gi...
    99+
    2023-10-30
    git leetcode 接口
  • mysql设置了utf8mb4,为什么还有utf8mb4_general_ci和utf8mb4_0900_ai_ci?
    前段时间,遇到一个mysql的问题,我仔细看看报错信息,应该是MySQL数据库报出来的,大意是说:collation不兼容,一个是 utf8mb4_0900_ai_ci,另一个是utf8mb4_general_ci。 utf8mb4_gen...
    99+
    2023-09-02
    数据库 mysql
  • 为什么需要选用NoSQL
    这篇文章将为大家详细讲解有关为什么需要选用NoSQL,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。关系型数据库已经成为计算机文化的一部分,因其很多优点:获取...
    99+
    2024-04-02
  • 为什么需要云解析
    云解析的作用:云解析可以为企业和开发者将易于管理识别的域名转换为计算机用于互连通信的数字IP地址,从而将用户的访问路由到相应的网站或应用服务器。具体分析如下:云解析是一种安全、快速、稳定、可靠的权威DNS解析管理服务,可以为企业和开发者将易...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作