Spring 和Spring Boot 有什么区别?

相信很多小伙伴和我一样,常用Spring 和Spring Boot 但是就是没有研究二者之间到底有什么区别?今天就来大揭秘 ↓概述对于 Spring和 Spri

大家好,如果您还对Spring 和Spring Boot 有什么区别?不太了解,没有关系,今天就由本站为大家分享Spring 和Spring Boot 有什么区别?的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

概述

我听到很多关于Spring和SpringBoot区别的回答。刚开始学习SpringBoot的时候,当时很迷茫。随着经验的积累,我慢慢明白了这两个框架都有什么。区别,相信长期使用SpringBoot的同学还是不太明白SpringBoot和Spring的区别。看完文章中的对比,你可能会有不同的答案和看法!

什么是Spring

作为一名Java开发人员,大家都熟悉Spring。简而言之,Spring框架为开发Java应用程序提供了全面的基础设施支持。它包含一些很好的功能,例如依赖注入和开箱即用的模块,例如:SpringJDBC、SpringMVC、SpringSecurity、SpringAOP、SpringORM、SpringTest。这些模块缩短了应用程序开发时间,提高了应用程序开发效率。例如,在JavaWeb开发的早期阶段,我们需要编写大量代码来将记录插入数据库。但是通过使用SpringJDBC模块的JDBCTemplate,我们可以将操作简化为几行代码。

什么是Spring Boot

SpringBoot 基本上是Spring 框架的扩展,它消除了设置Spring 应用程序所需的XML 配置,为更快、更高效的开发生态系统铺平了道路。

SpringBoot中的一些特性: 1.创建独立的Spring应用程序。 2. 嵌入Tomcat、Jetty、Undertow容器(无需部署war文件)。 3. 提供的启动器简化了构建配置。 4.尽可能自动配置spring应用程序。 5. 提供生产指标,例如指标、稳健性检查和外部化配置6. 完全没有代码生成和XML 配置要求

从配置分析

Maven 依赖

首先,让我们看看使用Spring 创建Web 应用程序所需的最小依赖项

与Spring 不同,Spring Boot 只需要一个依赖项即可启动和运行Web 应用程序:

在构建过程中,所有其他依赖项都会自动添加到项目中。

另一个很好的例子是测试库。我们通常使用SpringTest、JUnit、Hamcrest 和Mockito 库。在Spring 项目中,我们应该添加所有这些库作为依赖项。但在SpringBoot 中,我们只需要添加spring-boot-starter-test 依赖即可自动包含这些库。

Spring Boot 为不同的Spring 模块提供了许多依赖项。一些最常用的是: spring-boot-starter-data-jpaspring-boot-starter-securityspring-boot-starter-testspring-boot-starter-webspring-boot-starter-thymeleaf 有关启动器的完整列表,请检查出Spring 文档。 MVC配置

我们来看看Spring和SpringBoot创建JSP Web应用程序所需的配置。

Spring 需要定义调度程序servlet、映射和其他支持配置。我们可以使用web.xml 文件或Initializer 类来做到这一点:

还需要在@Configuration类中添加@EnableWebMvc注解,并定义一个视图解析器来解析从控制器返回的视图

我们再看一下SpringBoot。一旦我们添加了Web启动器,SpringBoot只需要在应用程序配置文件中配置几个属性即可完成上述操作:

上面的所有Spring 配置都是通过一个称为自动配置的过程添加Bootweb 启动器来自动包含的。

这意味着SpringBoot将查看应用程序中存在的依赖项、属性和bean,并根据这些依赖项配置属性和bean。当然,如果我们想添加自己的自定义配置,SpringBoot自动配置将会回退。

配置模板引擎

现在我们来看看如何在Spring和Spring Boot中配置Thymeleaf模板引擎。

在Spring 中,我们需要添加thymeleaf-spring5 依赖项以及视图解析器的一些配置:

SpringBoot1X 只需要spring-boot-starter-thymeleaf 的依赖即可在Web 应用程序中启用Thymeleaf 支持。但是由于Thymeleaf3.0 中的新功能,我们必须在SpringBoot2XWeb 应用程序中添加thymeleaf-layout-dialect 作为依赖项。配置完依赖项后,我们可以将模板添加到src/main/resources/templates 文件夹中,SpringBoot 会自动显示它们。

Spring安全配置

为简单起见,我们使用框架的默认HTTPBasic 身份验证。我们首先看一下使用Spring 启用安全性所需的依赖项和配置。

Spring 和Spring Boot 有什么区别?

Spring 首先需要依赖spring-security-web 和spring-security-config 模块。接下来,我们需要添加一个扩展WebSecurityConfigurerAdapter的类,并使用@EnableWebSecurity进行注释:

这里我们使用inMemoryAuthentication 来设置身份验证。同样,SpringBoot 需要这些依赖项才能工作。但我们只需要定义spring-boot-starter-security 的依赖项,因为这会自动将所有相关依赖项添加到类路径中。

SpringBoot中的安全配置与上面相同。

应用程序启动引导配置

Spring 和SpringBoot 中的应用程序引导之间的基本区别在于servlet。 Spring 使用web.xml 或SpringServletContainerInitializer 作为其引导入口点。 SpringBoot仅使用Servlet3功能来引导应用程序。下面让我们详细了解一下。

Spring 引导配置

Spring支持传统的web.xml启动方式和最新的Servlet3+方式。

配置web.xml方法启动的步骤

Servlet容器(服务器)读取web.xml

web.xml中定义的DispatcherServlet由容器实例化

DispatcherServlet 通过读取WEB-INF/{servletName}-servlet.xml 创建WebApplicationContext。最后,DispatcherServlet注册应用程序上下文中定义的bean

使用Servlet3+方法的Spring启动步骤

容器搜索实现ServletContainerInitializer的类,并执行SpringServletContainerInitializer来查找所有实现WebApplicationInitializer的类

WebApplicationInitializer 使用XML 或上下文创建@Configuration 类。 WebApplicationInitializer 使用先前创建的上下文创建DispatcherServlet。

SpringBoot 引导配置

Spring Boot应用程序的入口点是带有@SpringBootApplication注释的类

默认情况下,SpringBoot使用嵌入式容器来运行应用程序。在这种情况下,SpringBoot 使用publicstaticvoidmain 入口点来启动嵌入式Web 服务器。此外,它还负责将Servlet、Filter 和ServletContextInitializer bean 从应用程序上下文绑定到嵌入式servlet 容器。 SpringBoot的另一个特点是它会自动扫描Main类的同一个包中的所有类或子包中的组件。

SpringBoot提供了一种将其部署到外部容器的方法。我们只需要扩展SpringBootServletInitializer:

这里外部servlet容器查找war包下META-INF文件夹下的MANIFEST.MF文件中定义的Main-class。 SpringBootServletInitializer将负责绑定Servlet、Filter和ServletContextInitializer。

打包和部署

前言:关于打包和部署,我其实了解不多,但也有一个简单的了解。

最后,我们来看看如何打包和部署应用程序。这两个框架都支持常见的包管理技术,例如Maven 和Gradle。但在部署方面,这些框架差异很大。例如,Spring Boot Maven 插件在Maven 中提供SpringBoot 支持。它还允许打包可执行jar 或war 包并就地运行应用程序。

SpringBoot在部署环境上相比Spring的一些优势包括: 1. 提供嵌入式容器支持2. 使用命令java -jar 独立运行jar 3. 在外部容器中部署时,可以选择排除依赖,以避免潜在的依赖jar 冲突4. 部署时灵活指定配置文件的选项5. 集成测试的随机端口生成

结论

总之,我们可以说SpringBoot 只是Spring 本身的扩展,让开发、测试和部署更加方便。

用户评论

Spring 和Spring Boot 有什么区别?
几妆痕

我也是一直在想这两个有什么不同啊!感觉Spring框架太复杂了,所以才有了SpringBoot简化的概念吧?

    有5位网友表示赞同!

Spring 和Spring Boot 有什么区别?
龙吟凤

别问了哥,我踩过这个坑好几次!SpringBoot就是为了解决Spring框架过度繁琐的问题,整合了很多常用的技术框架,直接就能一键启动,简单很多!

    有16位网友表示赞同!

Spring 和Spring Boot 有什么区别?
话少情在

我觉得这篇博文讲得真的很清楚,我以前一直没明白SpringBoot的优缺点,现在终于明白了。やっぱり,简化和快速开发是最大的优势吧!

    有9位网友表示赞同!

Spring 和Spring Boot 有什么区别?
孤独症

其实Spring Boot就是个高阶版的Spring框架,它基于Spring而构建,包含了Spring的核心功能。对于简单的小项目来说,Spring Boot可能显得有些 overkill 了。

    有6位网友表示赞同!

Spring 和Spring Boot 有什么区别?
盲从于你

学习Spring真是太痛苦了,各种接口和xml配置要记住那么多…..SpringBoot虽然简化了许多,但在实际开发过程中还是会遇到很多问题,需要不断去研究解决。

    有8位网友表示赞同!

Spring 和Spring Boot 有什么区别?
爱到伤肺i

我也觉得SpringBoot越来越受欢迎是因为它更加易于上手,对于初学者来说,入门难度明显降低。Spring的学习曲线比较陡峭,对技术要求相对较高。

    有15位网友表示赞同!

Spring 和Spring Boot 有什么区别?
蝶恋花╮

我之前一直在用Spring框架开发项目,感觉工作效率一般,后来换用了SpringBoot,一下子就提升了效率,而且代码更简洁、更易于维护。现在越来越多人推荐SpringBoot了。

    有15位网友表示赞同!

Spring 和Spring Boot 有什么区别?
若他只爱我。

其实Spring和SpringBoot之间没有绝对的区别,只是Spring框架更加灵活,可以根据项目的实际需求进行个性化配置,而SpringBoot则更侧重于快速开发和简化的目标。

    有7位网友表示赞同!

Spring 和Spring Boot 有什么区别?
我家的爱豆是怪比i

我个人还是比较喜欢Spring Boot的这种集成了所有常用依赖库的方式,开发者不需要自己去寻找和配置这些库,节省了很多时间和精力。这样其实对学习Spring也很有帮助!

    有17位网友表示赞同!

Spring 和Spring Boot 有什么区别?
南宫沐风

SpringBoot虽然方便,但是我觉得它隐藏了一些底层实现细节,这可能会导致开发人员对Spring框架本身理解不够深入

    有19位网友表示赞同!

Spring 和Spring Boot 有什么区别?
断秋风

对于小型项目来说,使用Spring Boot直接搭建就比较合适了,代码简洁,配置简单,可以快速进行一些简单的功能测试。 如果要构建大型、复杂的项目来说,还需要根据实际需求选择合适的框架和工具组合!

    有17位网友表示赞同!

Spring 和Spring Boot 有什么区别?
莫名的青春

这篇文章讲得清清楚楚,总结得很到位! Spring就像是一个底层骨架,SpringBoot是在骨架上添加了衣服、鞋子等配件,让整个开发过程更方便快捷。

    有17位网友表示赞同!

Spring 和Spring Boot 有什么区别?
发型不乱一切好办

其实Spring不是一个容易学习的框架,它的学习成本比较高。而SpringBoot可以帮助初学者快速入门,用一种更简单的方式学习Spring相关知识

    有18位网友表示赞同!

Spring 和Spring Boot 有什么区别?
涐们的幸福像流星丶

我觉得对于新手来说,先从SpringBoot入手,熟悉其开发流程,然后再深入学习Spring框架是一个不错的选择路线!

    有6位网友表示赞同!

Spring 和Spring Boot 有什么区别?
孤廖

我还是喜欢直接看代码的风格,SpringBoot确实可以很快完成项目搭建,但是有时候一些复杂功能需要自己去探索实现方式也有些挑战性!

    有15位网友表示赞同!

Spring 和Spring Boot 有什么区别?
泡泡龙

这篇文章很有深度,能够帮助理解 Spring 和 Spring Boot 之间的关联和区别,对于学习 Java 开发来说非常有价值!

    有19位网友表示赞同!

Spring 和Spring Boot 有什么区别?
青衫负雪

Spring Boot 确实简化了很多开发流程,让我可以专注于业务代码的编写,而不是一直折腾框架配置问题!

    有7位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/118433.html

(0)
小su's avatar小su
上一篇 2024年9月1日 上午10:37
下一篇 2024年9月1日 上午10:44

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注