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.mzph.cn/news/604589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app 前后端调用实例 基于Springboot 详情页实现

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

mysql进阶-重构表

目录 1. 原因 2. 如何重构表呢? 2.1 命令1: 2.2 命令2: 2.3 命令3: 1. 原因 正常的业务开发,为什么需要重构表呢? 原因1:某张表存在大量的新增和删除操作,导致表经历过大量的…

JavaScript异常处理实战

前言 之前在对公司的前端代码脚本错误进行排查,试图降低 JS Error 的错误量,结合自己之前的经验对这方面内容进行了实践并总结,下面就此谈谈我对前端代码异常监控的一些见解。 本文大致围绕下面几点展开讨论: JS 处理异常的方式…

Keil 5 ARMCC编译错误和警告解释大全(2) 序列号1000-2000

1001:由 using 声明指定的类成员必须在直接基类中可见 1003:Sun 模式与 cfront 模式不兼容 1004:严格模式与 Sun 模式不兼容 1005:只有在编译 C 时才允许使用太阳模式 1006: 模板模板参数不能与其模板参数之一同名…

解决 Postman 报错问题:一份综合指南

Postman 是一个流行的 API 测试工具,它可以帮助开发者和测试人员快速地创建和发送各种 HTTP 请求,并查看响应结果。但是,在使用 Postman 的过程中,有时候会遇到一些报错或异常情况,影响了正常的测试流程。本文将介绍一…

图像分割-Grabcut法

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 本文的C#版本请访问:图像分割-Grabcut法(C#)-CSDN博客 GrabCut是一种基于图像分割的技术,它可以用于将图像…

上海东海职业技术学院低代码实训平台建设项目竞争性磋商公告

上海东海职业技术学院低代码实训平台建设项目竞争性磋商公告 招标|招标公告 上海市|闵行区 项目编号:0773-2340GNSHFWCS2823 招标单位:上海东海职业技术学院 代理单位:中金招标有限责任公司 预算金额:59万元 联系方式&…

Python:sqlalchemy报错DetachedInstanceError

sqlalchemy 对象commit之后再使用就会报错 DetachedInstanceError既然这样,提交后还需要使用,就拷贝一个副本出来 一个思路是 # -*- coding: utf-8 -*- """ File : sqlalchemy_util.py Date : 2024-01-07 Author : Peng Shiyu …

循环队列的队空队满情况

有题目: 循环队列放在一维数组A[0....M-1]中,end1指向队头元素,end2指向队尾元素的后一个位置。假设队列两端均可进行入队和出队操作,队列中最多能容纳M-1个元素。初始时为空。下列判断队空和队满的条件中,正确的是 …

vim/vi 模式切换和常用快捷键

vim/vi 切换模式: vim/vi 常用快捷键: 一般模式: gg:文件开头、G:文件结尾 shift^ :光标当前行首、shift^:光标当前行尾 yy:复制、p:粘贴、dd:删除当前行、…

CRM的request管理笔记

1 request类型 request有两种,device request和link request。 link request link req是对link进行精确控制。 link req是对每个link的请求,比如某一帧是否需要bubble recovery、某一帧是否需要长曝光等feature。device request 对一个设备进行每帧控制…

JDK 11:崭新特性解析

JDK 11:崭新特性解析 JDK 11:崭新特性解析1. HTTP Client(标准化)示例代码 2. 局部变量类型推断的扩展示例代码 3. 新的字符串方法示例代码 4. 动态类文件常量示例代码 5. Epsilon 垃圾收集器使用方式 结语 JDK 11:崭新…

MySQL数据库进阶-事务

事务 事务由单独单元的一个或多个SQL语句组成,在这 个单元中,每个MySQL语句是相互依赖的。而整个单独单 元作为一个不可分割的整体,如果单元中某条SQL语句一 旦执行失败或产生错误,整个单元将会回滚。所有受到影 响的数据将返回到…

导致服务器重启的原因都有哪些,要如何处理

计算机重启主要作用是保存对系统的设置和修改以及立即启动相关服务等。重新启动的最通常的理由是因为新软件或硬件的安装需要,或因为应用软件因为一些理由没有回应。有时候,一些站长或GM在租用使用服务器过程,有时会遇到自动重启的情况。由于…

现有网络模型的使用及修改(VGG16为例)

VGG16 修改默认路径 import os os.environ[TORCH_HOME] rD:\Pytorch\pythonProject\vgg16 # 下载位置太大了(140多G)不提供直接下载 train_set torchvision.datasets.ImageNet(root./data_image_net, splittrain, downloadTrue, transformtorchvis…

数据库原理与应用期末复习试卷2

数据库原理技术与应用 一.单项选择题 设有属性A,B,C,D,以下表示中不是关系的是( C) ​ A、R(A) B、R(A, B, C, D) C、R(AxBxCxD) D、R(A,B) 在SQL语言中的视图VIEW是数据库的(A)…

Informer:用于长序列时间序列预测的高效Transformer模型

最近在研究时间序列分析的的过程看,看到一篇精彩的文章,名为:《Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting》,特此撰写一篇博客。 文章主要研究了一种用于长序列时间序列预测的高效Trans…

继承和多态中的常见面试题(二)

1. 什么是多态? 多种形态,不同的对象来完成同一行为,会产生不同的行为或状态。多态的构成有两个条件:必须通过基类的指针或引用来调用虚函数;被调用的函数必须是虚函数,且派生类要对这个虚函数进行重写。 …

Windows:笔记本电脑设置休眠教程

前言 不知道大家在使用【Windows】笔记本有没有这个习惯,我会把他的电池选项的【休眠】设置进行打开。因为作为我们开发人员电脑一般是一周关一次机,有时候一个月关一次机。这时候【休眠】功能就给我们提供了一个好处,我们选择了【休眠】后电…

大数据安全速通知识点

以下是关于我对于大数据安全这门课程的的知识大概归纳,欢迎批评指正~ 大数据安全首先要对大数据有一定了解。 什么是大数据? 大数据是指在一定时间内无法用常规软件进行捕捉、管理和处理数据集合,需要新的处理方式才能具有更强决策力、洞察发…