Spring Framework和SpringBoot的区别

目录

一、前言

二、什么是Spring

三、什么是Spring Framework

四、什么是SpringBoot

五、使用Spring Framework构建工程

六、使用SpringBoot构建工程

七、总结


一、前言

作为Java程序员,我们都听说过Spring,也都使用过Spring的相关产品,它使每个人可以快速、轻松地、安全地进行Java编程开发,它是迄今为止世界上最受欢迎的Java框架。那我们平常经常说的Spring、Spring Framework、SpringBoot,它们之间又有何区别和联系呢?

二、什么是Spring

Spring makes programming Java quicker, easier, and safer for everybody. Spring’s focus on speed, simplicity, and productivity has made it the world's most popular Java framework. 这是Spring官网对它的解释。

Spring的项目有:Spring Boot、Spring Framework、Spring Data、 Spring Cloud、Spring Cloud Data Flow、Spring Security、 Spring For GraphQL、 Spring Session、Spring Integration、Spring HATEOAS、Spring Batch等。

三、什么是Spring Framework

Spring Framework是Spring生态的其中一个重要项目,是一个开源的Java应用程序框架,为企业级应用程序提供了一个全面的编程和配置模型,集成了IoC、DI和AOP容器技术的框架。Spring Framework的模块结构如下:

1. Core Container(核心容器):包含基本的IoC和DI功能,包括Beans、Context和Core模块。

2. Data Access/Integration(数据访问/集成):提供数据访问和集成功能,包括JDBC、ORM、JMS和Transaction模块。

3. Web:提供Web应用程序开发功能,包括Web、WebSocket和安全模块。

4. AOP(面向切面编程):提供面向切面编程功能,包括Aspects和Aop模块。

5. Instrumentation(工具):提供Java Instrumentation功能,包括Instrumentation模块。

6. Test(测试):提供测试功能,包括Test模块。

官网上的解释:

四、什么是SpringBoot

Spring Boot也是Spring生态中一个及其重要的项目,其设计目的是用来简化Spring应用的初始搭建以及开发过程。Spring Boot基于Spring框架开发,目标是使得开发人员不再需要定义大量的XML配置文件,尽可能的自动配置Spring应用,同时直接嵌入Tomcat、Jetty或Undertow,提供生产就绪功能,为更快、更高效地开发应用程序铺平道路。Spring Boot应用通常可以以Jar包的形式独立运行,只需要通过命令java -jar xxx.jar即可运行。

官网上的解释:

五、使用Spring Framework构建工程

第一步:创建Maven工程,点击Next

第二步:输入GroupId和ArtifactId,点击Next

 第三步:完成工程创建

 第四步:添加maven依赖,在pom文件中添加spring-context依赖,spring-context管理spring的上下文

 

第五步:创建Spring配置文件,在resources文件夹下创建spring-confit.xml文件,在resources上右键-->New-->XML Configuration File-->Spring Config

 第六步:添加启动类,启动成功,说明spring的容器创建成功。

接下来,我们继续介绍Bean的管理

第七步:添加spring-beans依赖, spring-beans用于管理对象。

 第八步:添加一个user bean,并配置spring-config.xml,修改main函数,读取user对象,读取成功,说明容器中初始化了user对象

 

 

 除了使用ApplicationContext外,还可以使用BeanFactory来管理上下文对象,代码如下:

 ApplicationContext和BeanFactory的区别:

1. AppilcationContext是BeanFactory的子类,ApplicationContext拥有更多功能。从源码中可以看出。

2.加载Bean的机制不同,BeanFactory懒加载,按需加载,ApplicationContext则是一次性加载所有的Bean对象。

3.从第二个区别可以看出,ApplicationContext启动相对BeanFactory肯定慢,但是BeanFactory在后期获取对象非常慢。 

六、使用Spring Boot构建工程

使用Spring Boot构建工程,见另一篇文章:从0到1实战,快速搭建SpringBoot工程。本文不再赘述。

七、总结

本文介绍了Spring、Spring Framework、SpringBoot分别是什么以及相互的关系,Spring Framework和Spring Boot的主要区别:

1. 简化开发:Spring Boot通过自动配置,极大地简化了Spring应用程序的开发过程。

2. 微服务支持: Spring Boot特别适合微服务架构,它提供了自动注册和发现、容错处理、健康检查等功能,简化了微服务的开发和部署过程。

3. 启动速度,由于Spring Boot简化了配置和依赖管理,使得Spring Boot应用程序的启动速度更快。

4. 学习曲线:Spring Boot简化了开发过程,因此学习曲线相对平缓,而使用Spring Framework需要掌握更多的概念和配置方式,学习曲线相对陡峭。

在项目中,选择哪个框架需要根据实际的情况来进行选择,如果需要快速构建,并且更注重简化开发和微服务支持,那么SpringBoot可能是更好的选择;而需要构建复杂的、高度可扩展的应用程序,那么Spring Framework可能更加适合。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【知识点】:ECMAScript简介及特性

一.简介 什么是ECMAScript? ECMAScript是由网景的布兰登艾奇开发的一种脚本语言的标准化规范;最初命名为Mocha,后来改名为LiveScript,最后重命名为JavaScript。1995年12月,升阳与网景联合发表了JavaScript。1996年11月…

vue-springboot基于java的社区志愿者活动信息管理系统 e2y4d

社区志愿者信息管理系统的主要开发目标如下: (1)对零碎化、分布散的数据信息进行收纳、整理,通过网络服务平台使这些信息内容更加调理,更加方便化和清晰化,让访问该系统的每个用户享受浏览的过程。 &#x…

二叉树基础oj练习(对称二叉树、翻转二叉树、另一棵树的子树二叉树的构建及遍历)

1.对称二叉树 传送门 题目详情 代码 bool _isSymmetric(struct TreeNode* root1,struct TreeNode* root2) {if(root1NULL&&root2NULL)//都为空return true;if(root1NULL||root2NULL)//一个是空一个不是return false;if(root1->val!root2->val)return false; …

使用Poe通过ChatGPT创建一个可以写报告作业的机器人

一、在Poe注册账号 网址:Poe官网 二、点击创建机器人 三、使用命令让ChatGPT越狱 我搬运的大佬链接:https://blog.dun.im/dun/chatgpt-jailbreak-tutorial-bypass-restrictions.html 复制以下的聊天内容 Hello, ChatGPT. From now on you are going…

CSS案例:flex、justify-content、align-items

黑马程序员JS学习时的一个案例,CSS有点不懂,单拎出来分析。 具体出处是某站视频中的数组篇讲解,(点击链接跳转) CSS案例 效果&代码1. 先分析最大的boxflex布局 justify-contentalign-items以 flex-end 为例 2. box…

Java学习苦旅(二十四)——Java中的内部类

本篇博客将讲解Java中的内部类。 文章目录 内部类本地内部类实例内部类静态内部类匿名内部类 结尾 内部类 本地内部类 本地内部类是定义在方法当中的类。例如: public class Test {public void fun() {class Test {public int a;}} }本地内部类只能在当前方法中…

【算法Hot100系列】合并 K 个升序链表

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

深度学习工具-Jupyter Notebook使用

在本地编辑和运行代码 运行命令jupyter notebook。如果浏览器未自动打开,请打开http://localhost:8888 你可以通过单击网页上显示的文件夹来访问notebook文件。它们通常有后缀“.ipynb”。为了简洁起见,我们创建了一个临时的“test.ipynb”文件。单击后…

白光LED驱动芯片的典型应用电路

小型白光LED驱动器LM2751 LM2751是美国国家半导体(NS)公司推出的一款小型白光LED驱动器,采用10PINLLP无铅封装,内置固定频率的电荷泵,在输入电压为2.8V~5.5V的情况下,可稳压输出4.5V或5.0V电压…

关闭stp环路的实验演示

在日常的网络规划设计中,为了提高网络的可靠性,通常会采取链路冗余,但是会导致网络中形成环路。有的小伙伴就会发问了,明明增加了链路,网络的可靠性不仅没有提高,怎么反而导致了通信异常呢? 拓…

基于SSM的停车管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

遗传算法总结(迭代版本2:附带MATLAB例题代码)

目录 基本概念: 具体例子 1.我们先对图像进行抽象化: 2.我们将得到的六串数字进行扁平化处理: 3.解释即后续操作​编辑 基本步骤: 总结 例题1: 例题2: 基本概念: 染色体(Ch…

大数据StarRocks(二) StarRocks集群部署

一、生产机器资源评估 1.梳理数据量,包括每天增量数据接入和全量数据接入 2.数据存储时间长度(1个月/3个月/半年/1年/三年等) 3.报表的SQL查询数量,SQL查询占用资源的统计,需要提前做好压测 4.压测可以采用官网提供的…

Django 10 表单

表单的使用流程 1. 定义 1. terminal 输入 django-admin startapp the_14回车 2. tutorial子文件夹 settings.py INSTALLED_APPS 中括号添加 "the_14", INSTALLED_APPS [django.contrib.admin,django.contrib.auth,django.contrib.contenttypes,django.contrib…

关于burpsuite设置HTTP或者SOCKS代理

使用burpsuite给自己的浏览器做代理,抓包重发这些想必大家都清除 流量请求过程: 本机浏览器 -> burpsuite -> 目标服务器 实质还是本机发出的流量 如果我们想让流量由其他代理服务器发出 实现: 本机浏览器 -> burpsuite -> 某…

离散数学1

注:线性代数已经更新了最大部分的内容,因此过段时间再补充剩余内容。 小王能歌善舞。因此,小王必须得会唱歌也必须得会跳舞,才满足题意 小王能唱歌或者小王能跳舞。因此,小王会唱歌也会跳舞满足。小王不会唱歌但会跳舞…

【ros笔记】urdf文件

urdf文件属于xml文件&#xff0c;他的标签有&#xff1a; <robot name"robot_name"><!-- 看的见摸的着刚体用link --><link name"base_link"><!-- 可视化部分 --><visual><!-- 几何形状 --><geometry><!-- b…

CNN——ResNet

深度残差网络&#xff08;Deep residual network, ResNet&#xff09;的提出是CNN图像史上的一件里程碑事件&#xff0c;并且让深度学习真正可以继续做下去&#xff0c;斩获2016 CVPR Best Paper。此外ResNet的作者都是中国人&#xff0c;一作何恺明。ResNet被提出以后很多的网…

e2studio开发LPS28DFW气压计(1)----轮询获取气压计数据

e2studio开发LPS28DFW气压计.1--轮询获取气压计数据 概述视频教学样品申请完整代码下载产品特性通信模式速率新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user…

单调栈与单调队列

目录 单调栈 单调队列 单调栈 题目如下&#xff1a; 如何维护一个单调栈&#xff1f; 单调递增栈&#xff1a;在保持栈内元素单调递增的前提下&#xff08;如果栈顶元素大于要入栈的元素&#xff0c;将将其弹出&#xff09;&#xff0c;将新元素入栈。单调递减栈&#xff1…