Spring Framework和SpringBoot的区别

news2024/12/24 11:32:30

目录

一、前言

二、什么是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.coloradmin.cn/o/1364485.html

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

相关文章

基因组学之碱基突变的关键概念

碱基突变 突变(muation)会引起DNA序列的变化,进一步会引起蛋白序列的改变。正常的细胞活动或细胞与环境的随机相互作用,会使得生物产生一定数目的突变,称为自发突变(spontaneous muation)。突变…

多线程第一课---

UML中规定的箭头方向是从子类指向父类。 关于这一点,按照以下方法去理解有助于大家记住这条规则。 在定义子类时需要通过extends关键字指定父类。因此, 子类一定要知道父类的定义,而反过来,父类并不知道子类的定义。 只有在知道对…

Spring事务(2):声明式事务管理案例-转账(xml、注解)

1 编写转账案例,引出事务管理问题 需求:账号转账,Tom账号取出1000元,存放到Jack账号上 1.1 建表脚本(MySQL) CREATE TABLE t_account (id INT(11) NOT NULL AUTO_INCREMENT,name VARCHAR(20) NOT NULL,m…

Arduino开发实例-欧姆龙E3Z-D61光电传感器

欧姆龙E3Z-D61光电传感器 文章目录 欧姆龙E3Z-D61光电传感器1、E3Z-D61光电传感器介绍2、硬件准备及接线3、代码实现1、E3Z-D61光电传感器介绍 Omran 光电传感器可用于检测 5 至 100 毫米距离内的障碍物和物体。 传感器上有一个 LED,它始终熄灭,并在检测到障碍物时亮起。 您…

Plantuml之nwdiag网络图语法介绍(二十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

IDEA[Debug]简单说明

目录 🥞1.打断点 🌭2.第一组按钮 🧂3.第二组按钮 🥓4.参数查看 1.打断点 1.在需要断点处打上断点,然后点击debug运行 2.执行debug,直接执行到断点处 2.第一组按钮 共有8按钮,从左往右依…

【普中开发板】基于51单片机的简易密码锁设计( proteus仿真+程序+设计报告+讲解视频)

基于51单片机的简易密码锁设计 1.主要功能:资料下载链接: 实物图:2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单 【普中】基于51单片机的简易密码锁设计 ( proteus仿真程序设计报告讲解视频) 仿真图proteus8.16(有低版本) 程…

Defi安全-Monox攻击事件Foundry复现

其它相关内容可见个人主页 Mono攻击事件的介绍见:Defi安全–Monox攻击事件分析–phalconetherscan 1. 前情提要和思路介绍 Monox使用单边池模型,创建的是代币-vCash交易对,添加流动性时,只需添加代币,即可进行任意代…

秋招复习之堆

目录 前言 堆 堆的常用操作 堆的实现(大根堆) 1. 堆的存储与表示 2. 访问堆顶元素 3. 元素入堆 4. 堆顶元素出堆 Top-k 问题 方法一:遍历选择 方法二:排序 方法三:堆 总结 前言 秋招复习之堆。 堆 「堆 heap…

分布式系统——广播Broadcasts

1 广播抽象(Broadcast Abstractions)在进程中的两种方法 在分布式系统中广播抽象的概念。广播抽象允许系统中的进程使用两种基本方法进行通信: 1.1 Broadcast(m) 当一个进程 i 使用这个方法时,它会将消息 m 发送给系统中的所有其它进程。 1.2 …

数据结构实验1:栈和队列的应用

目录 一、实验目的 二、实验原理 1.1栈的基本操作 1.1.1 栈的定义 1.1.2 初始化栈 1.1.3 压栈(Push) 1.1.4 出栈(Pop) 1.1.5 判空(isEmpty) 1.1.6 查看栈顶元素(Top) 1.1…

【好书推荐】我的第一本科技漫画书:漫画区块链

王杰,南京理工大学物理电子学硕士,曾担任乐视VR技术总监,现为北京米唐科技有限公司CEO,知乎“区块链”领域知名作者,北京信息科技大学、北京建筑大学、北京信息职业技术学院客座教授。 郑巍,擅长绘制钢笔淡…

application.properties 如何改成 application.yml

Convert YAML and Properties File 右键直接转换即可 Further Reading : idea 常用插件

14_IO_其他流

文章目录 数据流DataOutputStream数据输出流DataInputStream数据输入流 打印流PrintStream字节打印流PrintWriter字符打印流 标准输入输出流标准输入流标准输出流 对象流(序列化与反序列化流)ObjectOutputStream序列化流ObjectInputStream反序列化流 RandomAccessFile随机访问文…

【Harmony OS - 网络请求】

在一个应用开发中,网络请求是必不可少的,我们一般用的fetch、axios来进行http请求,在鸿蒙中也可以通过createHppt来发生一个http请求,它们都是异步请求返回的Promise,下面我们将介绍’ohos.net.http’和axios这两种方式…

(21)Linux的文件描述符输出重定向

一、文件描述符 1、文件描述符的底层理解 在上一章中,我们已经把 fd 的基本原理搞清楚了,知道了 fd 的值为什么是 0,1,2,3,4,5... 也知道了 fd 为什么默认从 3 开始,而不是从 0,1,2,因为其在内核中属于进程和文件的对应关系。 …

Mysql SQL审核平台Yearning本地部署

文章目录 前言1. Linux 部署Yearning2. 本地访问Yearning3. Linux 安装cpolar4. 配置Yearning公网访问地址5. 公网远程访问Yearning管理界面6. 固定Yearning公网地址 前言 Yearning 简单, 高效的MYSQL 审计平台 一款MYSQL SQL语句/查询审计工具,为DBA与开发人员使用…

Python的基础练习题之学生管理系统

需求 使用Python基础写一个基于控制台的学生管理平台,里面功能分别是:1.录入学生信息2.查找学生信息3.删除学生信息4.修改学生信息5.排序6.统计学生总人数7.显示所有学生信息,要求数据存储在文件里。 代码 代码资源地址可以直接下载 效果图…

05 Ciso模拟器连接腾讯云物联网开发平台

Ciso声明:本篇文章基于使用腾讯云物联网平台连接自定义esp8266物联网设备(腾讯连连控制开关实现) - CSDN App改编 一、总体概览 功能描述: 使用腾讯连连小程序进行控制, Alarm(警铃):开的时候&#xff…

【AI视野·今日Robot 机器人论文速览 第六十九期】Wed, 3 Jan 2024

AI视野今日CS.Robotics 机器人学论文速览 Wed, 3 Jan 2024 Totally 5 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers NID-SLAM: Neural Implicit Representation-based RGB-D SLAM in dynamic environments Authors Ziheng Xu, Jianwei Niu, Qingf…