【SpringBoot】带你迅速弄懂SpringBoot和Spring的区别(通俗易懂!!面试必考!)

news/2024/12/22 9:07:04/

分别介绍一下这两个框架

Spring

        Spring是一个轻量级的开源Java框架,用于开发企业级Java应用程序。它提供了一系列的模块和工具,用于解决企业级应用程序开发中的各种问题,比如依赖注入面向切面编程数据访问事务管理等。

        Spring可以通过配置文件(XML)或者注解来实现

SpringBoot

        Spring Boot是构建在Spring框架之上的一款开箱即用的框架,对Spring的一些功能做了增强并且简化了Spring应用程序中的开发和部署过程(不用写一大堆文件了,SpringBoot实现了自动配置),并且能够快速启动。SpringBoot采用了约定优于配置的原则,通过自动配置和默认值减少了繁琐的启动步骤,并提供了一系列的启动依赖,使得开发者能够更加专注业务逻辑的实现。

再细说以下主要的区别

配置方式

        当使用Spring框架时,我们需要手动配置和定义Bean(对象)、处理器等。通常,我们会使用XML配置文件或者注解来指定这些配置。XML配置文件包含了应用程序的组件、依赖项以及它们之间的关系。注解则是一种在Java类中添加元数据的方式,用于指定类、方法和属性的作用和行为。

例如,我们可以使用XML配置文件来定义一个Bean:

<bean id="userService" class="com.example.UserService"><property name="userRepository" ref="userRepository" />
</bean><bean id="userRepository" class="com.example.UserRepository" />

        上述代码中,我们定义了一个名为userService的Bean,它的类型是com.example.UserService。同时,我们还定义了一个名为userRepository的Bean,它的类型是com.example.UserRepository。通过<property>元素,我们将userRepository设置为userService的依赖。

        但是,在Spring Boot中,我们采用约定优于配置的原则,即根据约定自动进行配置,而无需手动编写大量的XML配置文件或者注解。Spring Boot提供了许多默认配置和自动配置,使得开发者能够更快地启动和运行应用程序。

        Spring Boot会根据项目的依赖和约定来自动配置应用程序所需的Bean和组件。例如,如果我们在项目中引入了Spring Data JPA依赖,Spring Boot会自动配置JPA相关的Bean,如EntityManagerTransactionManager等。如果我们引入了Web依赖,Spring Boot会自动配置内嵌的Servlet容器和Web处理器。

依赖管理

        Spring框架通常需要手动管理各种依赖,包括配置依赖、版本控制等。而Spring Boot通过提供起步依赖简化了依赖管理,起步依赖可以自动导入所需的依赖,让开发者更方便地使用各种功能模块。

        在使用Spring框架时,我们需要手动管理各种依赖,包括配置依赖项、版本控制等。这意味着我们需要在项目中手动添加所需的依赖项,并确保它们的版本兼容性。这通常需要开发人员去查找和选择适当的依赖项,并手动更新它们的版本。

        而Spring Boot通过提供起步依赖(Starter)的方式简化了依赖管理起步依赖是一组预定义的依赖项集合,旨在支持特定功能或模块的快速开发。每个起步依赖都定义了一组相关的依赖项,可以通过在项目的构建配置中添加起步依赖来自动导入这些依赖项。

        通俗地说,起步依赖就像是一个“一站式”解决方案,它包含了开发某种特定功能或模块所需的所有必要依赖。例如,如果我们想开发一个Web应用程序,只需添加spring-boot-starter-web起步依赖,Spring Boot会自动导入与Web开发相关的依赖项,如Servlet容器(如Tomcat、Jetty)、Spring MVC框架、JSON解析器等。

        通过使用起步依赖,开发者无需手动查找和添加每个依赖项,也不需要担心版本兼容性。Spring Boot会自动处理依赖项的版本冲突,并确保所使用的依赖项是兼容的。

开发体验

        Spring Boot提供了一系列的开发工具和开箱即用的特性,使得开发者能够迅速搭建起一个可运行的应用程序并进行开发。它通过内嵌的Servlet容器(如Tomcat、Jetty)和自动配置等功能,大大减少了开发者的工作量和学习曲线。

        首先,Spring Boot内嵌了常见的Servlet容器,如Tomcat和Jetty。这意味着我们不需要手动安装和配置这些容器,而是直接将它们打包到我们的应用程序中。只需编写一些简单的代码,我们的应用程序就可以自动启动并运行在内嵌的容器上。这大大减少了我们的工作量,并简化了开发过程。

        其次,Spring Boot提供了自动配置的功能。它通过使用约定大于配置的原则,根据我们的项目依赖和类路径中的内容,自动配置应用程序的各种组件。这意味着我们不再需要手动编写大量的配置代码,Spring Boot会根据情况自动为我们完成配置。例如,如果我们添加了数据库相关的起步依赖,Spring Boot会自动配置数据源和JdbcTemplate等组件,我们只需要专注于编写业务代码即可。

        此外,Spring Boot还具有很好的集成性。它可以与其他Spring项目和第三方库无缝集成,使得我们能够快速构建复杂的应用程序。例如,Spring Boot可以与Spring Data JPA集成,提供方便的数据库访问功能;它也可以与Spring Security集成,提供安全认证和授权功能。通过这些集成,我们能够更高效地开发各种应用程序,而无需花费大量时间去研究和集成各种组件。


http://www.ppmy.cn/news/1080781.html

相关文章

php截取网址/参数作为的短网址的实现方案

项目需求&#xff1a; http://menzhen.com/t/?yzzdd&#xff0c;如何分离出yzzdd&#xff0c;并将?yzzdd作为数值从数据库中读取对应的数据&#xff0c;进行页面跳转。 获取 URL 在 PHP 中&#xff0c;你可以使用 parse_url() 函数来解析 URL 并获取其组成部分。要获取 URL …

javacv 基础04-读取mp4,avi等视频文件并截图保存图片到本地

javacv 读取mp4,avi等视频文件并截图保存图片到本地 代码如下&#xff1a; package com.example.javacvstudy;import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.Frame; import org.bytedeco.javacv.Java2DFrameConverter;import javax.imageio.Im…

【V4L2】V4L2子设备

系列文章目录 【V4L2】V4L2框架简述 【V4L2】V4L2框架之驱动结构体 【V4L2】V4L2子设备 文章目录 系列文章目录v4l2子设备用户空间APII2C子设备驱动video_device 结构体ioctls 与 lockingv4l2_fh 结构体 V4L2 events一些有用的函数&#xff1a; v4l2子设备用户空间API 可以在…

CAR-T商品化的第一步

1、CAR-T细胞的体外扩增能力 CAR-T细胞疗法需要先从患者体内获得T淋巴细胞&#xff0c;然后通过体外转基因技术 transduce CAR靶向结构域。这一过程需要在细胞培养体系中得到充分的扩增&#xff0c;以获得足够的治疗CAR-T细胞数量。因此&#xff0c;CAR-T细胞的体外扩增能力直…

高并发(水平扩展,垂直扩展)

高并发(水平扩展&#xff0c;垂直扩展) 一、什么是高并发 高并发&#xff08;High Concurrency&#xff09; 是互联网分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c; 通过设计保证系统能够同时并行处理很多请求。 高并发相关常用的一些指标有 响…

12 权重衰退

过拟合的应对方法——weight_decay 权重衰退是最广泛使用的正则化方法之一。 模型容量受参数个数和参数范围影响&#xff0c;通过L2正则项限制w的取值范围&#xff0c;权重w每次更新乘以小于1的数&#xff0c;w的数值范围不会太大&#xff0c;从而降低模型复杂度&#xff0c;…

Redis常用命令,你了解哪些呢?

目录 前置工作&#xff1a;先进入Redis客户端 1、Redis最核心的两个命令&#xff1a;get & set set&#xff1a;存键值对 get&#xff1a;根据key&#xff0c;取出value 2、Redis全局命令 2.1、keys ---查询当前服务器上匹配的key 2.1.1. &#xff1f; 匹配任意一个字…

Message: ‘chromedriver‘ executable may have wrong permissions.

今天运行项目遇到如下代码 driverwebdriver.Chrome(chrome_driver, chrome_optionsoptions)上述代码运行报错如下&#xff1a; Message: chromedriver executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home出错的原…