SpringBoot框架之概述与原理浅析[通俗易懂]

SpringBoot框架之概述与原理浅析[通俗易懂]在上一篇博客SpringBoot框架之创建第一个项目(两种方式)演示了如何创建SpringBoot项目,在此篇博客将对上述过程的作用、SpringBoot实现原理进行简单的分析。一、SpringBoot框架概述1、什么是SpringBootSpringBoot是由Pivotal团队提供的全新框架,目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在上一篇博客 SpringBoot框架之创建第一个项目(两种方式)演示了如何创建SpringBoot项目,在此篇博客将对上述过程的作用、SpringBoot实现原理进行简单的分析。

一、SpringBoot框架概述

1、什么是SpringBoot

Spring Boot是由Pivotal团队提供的全新框架,目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。(摘自百度百科??)
SpringBoot官网
一句话总结:SpringBoot是简化Spring框架环境搭建、配置、使用的工具
(对于这句话,如果你把前面那篇SpringBoot第一个项目创建演示的博客看完就能深刻体会。)

2、为什么要使用SpringBoot

解释这个问题前,我们首先回想一下Spring框架相关内容。

Spring的组件代码轻量,配置却是重量级

SpringJava企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过控制反转IOC面向切面编程AOP,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。

但是用过Spring的都知道,配置过程较为复杂,每个Bean的装配都要在xml中配置一下才能自动装入。
在这里插入图片描述
当只有少量Bean时,配置过程还不怎么复杂,但是SSM三大框架整合,还有些其它框架加入,配置过程就变得比较复杂。

Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。

但是每个项目都需要进行这个繁琐但又必须的配置过程,因此急需一个工具来自动处理Spring配置过程。这就是Pivotal团队设计SpringBoot的初衷。

Spring的优点也是SpringBoot的优点,SpringBoot还解决了Spring的缺点

SpringBoot对上述Spring的缺点进行的改善和优化,基于 约定优于配置 的思想,可以让开发人员不必在配置逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。

3、SpringBoot的特点

①、基于Spring的开发提供更快的入门体验
②、开箱即用,没有代码生成,也无需XML配置。也支持修改默认配置
③、提供了一些大型项目中常见的非功能性特性,如嵌入式服务器、安全、指标,健康检测、外部配置等

SpringBoot不是对Spring功能上的增强,而是提供了一种快速使用Spring的方式。

4、SpringBoot的核心功能

①、起步依赖

SpringBoot起步依赖就是前面那篇创建springBoot项目中,手动创建法时,在项目Maven核心配置文件pom.xml中添加的spring-boot-starter-parent
在这里插入图片描述
这是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能。

简单的说,起步依赖就是将具备Spring功能(还包括其它功能)的坐标打包到一起,并提供一些默认的功能。

②、自动配置

Spring Boot的自动配置是一个运行时(更准确地说,是应用程序启动时)的过程,考虑了众多因素,才决定Spring配置应该用哪个,不该用哪个。该过程是Spring Boot自动完成的。

比如前面博客演示的手动创建SpringBoot项目,没有编写任何SpringSpringMVC框架相关的配置,该项目通过SpringBoot就完成了SpringSpringMVC的整合。
在这里插入图片描述

二、SpringBoot框架原理浅析

既然SpringBoot有起步依赖、自动配置两大核心功能,我们下面对其实现原理进行简单的分析。

1、起步依赖的原理

首先打开项目Maven核心配置文件pom.xml
点击进入org.springframework.boot的项目pom.xml配置文件
在这里插入图片描述
然后进入spring-boot-dependenciespom.xml配置文件。
在这里插入图片描述
这里就是SpringBoot 2.0.1.RELEASE使用的默认依赖信息。
在这里插入图片描述
比如我们搜索一下spring-core,即可看到启动依赖中导入的Spring依赖。
在这里插入图片描述
所以起步依赖的原理是将一些特定版本的依赖整合到spring-boot-dependencies项目中,然后其他SpringBoot项目通过Maven传递依赖继承这些依赖,这样就不用我们自己手动配置Spring组件了。

手动创建SpringBoot项目的时候,我们还导入web相关的依赖,相当于SpringMVC框架的引入。
在这里插入图片描述
在这里插入图片描述
因此不能得出一个结论,SpringBoot简化Spring组件的配置过程的原理是将各组件需要的依赖进行封装,SpringBoot项目只要传递依赖这些封装好的pom.xml即可。

2、自动配置原理

在手动创建SpringBoot项目的时候,还创建了一个项目启动类。
在这里插入图片描述
这个@SpringBootApplication就是默认配置的关键。按住ctrl点进去看一下
在这里插入图片描述
这里已经进行了默认的设置,这才导致我们只要在控制器中添加@Controller注解,SpringBoot项目就会自动识别为控制器的原因,即自动配置的原理。
注 意 : \color{red}注意: 组件注解扫描的范围是启动类所在的包以及其子包下的所有包。
在这里插入图片描述
当然我们也可以修改默认配置,在src/main/resources中新建配置文件。
在这里插入图片描述
那SpringBoot项目如何知道你添加的application.properties是项目配置文件呢?
在这里插入图片描述
在这里插入图片描述
以上就是SpringBoot框架之概述与原理浅析,对于SpringBoot入门已经足够了!
喜欢的可以点个赞哟~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/171554.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • jprofiler监控jvm_怎么检测jps

    jprofiler监控jvm_怎么检测jps很多人在学习java的时候只是对java粗略的学了一遍,很少有人能了解jvm层面的一些东西,比如我们想看目前有多少个java进程,可以在命令行执行jps。下面我们来说说jps的一些详细的用法。jps输出正字运行的相关进程信息jps-v输出传递给jvm参数jps-l输出模块名以及包名,如果是jar则出输jar文件全名jps-m输出传递给jvm参数jps-mlv输出进程号,包名,虚拟…

  • 百科知识题库_趣味知识竞赛题库及答案

    百科知识题库_趣味知识竞赛题库及答案.西印度群岛位于哪个大洋的西岸?大西洋2.七大洲中面积第二大的是哪个洲?非洲3.“知之为知之,不知为不知,是知也。”是古代的哪位大教育家对学生讲的话?孔子4.“不以规矩,不能成方圆”是出自古代哪位著名儒家思想家之口?孟子5.我国法律规定年满多少周岁就有选举权和被选举权?18岁6.我国民航法规定,乘坐民航班机年满多少周岁的人不能购买儿童票?12岁7.演唱《桃花朵朵开》的马来西

  • pcanywhere远程控制的步骤_windows10远程桌面端口修改

    pcanywhere远程控制的步骤_windows10远程桌面端口修改  PcAnywhere远程连接默认端口是5631[数据端口]、5632[状态端口],实际发现其实防火墙打开5631[数据端口]端口就可以自由访问。要改变Pcanywhere数据端口[5631]要去编辑系统注册表,找到以下键值:开始->运行->regedit:HKEY_LOCAL_MACHINE\SOFTWARE\Symantec\pcAny…

  • C语言学习——数组

    C语言学习——数组基础知识字符串处理函数包含在头文件 string.h 中字符串输出函数 puts格式: puts(字符数组)功能:向显示器输出一个字符串(输出完,换行)说明:字符数组必须以‘\0’结束。可以包含转义字符。输出时‘\0’转换成‘\n’,即输出字符后换行。字符串输入函数gets格式:gets (字符数组)功能:从键盘输入一个以回车结束的字符串放入字符数组中,并自动加‘\0’。…

  • 脉冲信号matlab仿真,脉冲积累matlab仿真[通俗易懂]

    脉冲信号matlab仿真,脉冲积累matlab仿真[通俗易懂]%T_7_1.m%相干积累clearallclcclfc=3e8;%speedoflightTe=100e-6;%发射脉冲宽度Be=1e6;%带宽mu=Be/Te;%调频斜率Ts=1/(2……雷达线性调频脉冲压缩的原理及其MATLAB仿真汇总_中职中专_职业教育_教育专区。LFM脉冲压缩雷达仿真线性调频(LFM)脉冲压缩雷达仿真宋萌瑞20142…

  • 解构赋值的作用_数组解构赋值

    解构赋值的作用_数组解构赋值文章目录概念数组解构声明分别赋值解构默认值交换变量值解构函数返回的数组忽略返回值(或跳过某一项)赋值数组剩余值给一个变量嵌套数组解构字符串解构对象解构基础对象解构赋值给新变量名解构默认值赋值给新对象名的同时提供默认值同时使用数组和对象解构不完全解构赋值剩余值给一个对象嵌套对象解构(可忽略解构)注意事项小心使用已声明变量进行解构函数参数的解构赋值解构的用途交换变量的值从函数返回多个值提取JSON数据概念ES6提供了更简洁的赋值模式,从数组和对象中提取值,这被称为解构示例:[a,b]=[50,1

    2022年10月22日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号