前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot和springmvc

springboot和springmvc

作者头像
叔牙
发布2020-11-19 15:22:02
6450
发布2020-11-19 15:22:02
举报
文章被收录于专栏:一个执拗的后端搬砖工

springboot和springmvc

在这里输入一段文字,可以是引言或其他概况、总结、摘要文字。

介绍

springboot是一个用于快速设置应用程序的实用工具,它提供了开箱即用的配置来构建基于Spring的应用程序,对于初学者来说,这带来了许多困扰,初学者提出的一个基本的问题就是springboot和spirngmvc之间的区别是什么?

这篇文章旨在回答这个问题,到文章结束时,我们将对以下几点有一个基本的了解:

  • 什么是spring框架?
  • MVC框架综述。
  • 什么是springboot?
  • springboot是springmvc的替代品吗?
  • springboot与springmvc对比分析

在这篇文章的末尾,我们将了解springmvc和springboot是Spring生态系统的一部分,它们不是竞争关系,而是相互协同,从某种程度上springmvc和springboot是不可比较或者说互斥的。

为了更好的理解,我们来看一下springmvc和springboot以及它们帮我们解决了什么问题。

1

springmvc

Spring MVC是基于Spring框架的基于模型视图控制器(MVC)的Web框架,它是基于servlet API构建的原始Web框架,为构建Web应用程序提供了许多现成的特性:

  • 角色的清晰分离,每个角色——控制器、验证器、命令对象、表单对象、模型对象、DispatcherServlet、处理程序映射、视图解析器等等——都可以由专门的对象来完成
  • 框架和作为javabean的应用程序类的强大而直接的配置
  • 可定制的绑定和验证
  • 可定制的映射处理和视图解析
  • 强大的主题和本地化解决特性

2

springboot

springboot是一个强大的实用工具,可以通过提供默认配置来快速设置应用程序,从而构建基于Spring的应用程序,下面是springboot的特性:

  • 最适合使用的微服务平台之一
  • 使用智能和约定优于配置的方式,可以显著简化项目的启动和配置阶段
  • 基于application.properties或YML文件的强大和灵活的配置管理
  • 自动配置模块
  • springboot starters为你的应用程序提供现成的自动配置
  • 生产环境现成的actuator监控模块
  • 通过采用固定视图来简化Spring依赖

2.1:为什么使用springboot

很显然有一个问题就是“为什么我们需要springboot”? 当我们有Spring和SpringMVC框架时,要回答这个问题,让我们看看搭建SpringMVC应用程序的步骤(不使用Spring Boot):

  • 使用我们选择的Maven或IDE创建Web应用程序
  • 复制标准Web应用程序配置(Spring MVC应用程序的web.xml配置)
  • 根据我们的要求调整以上配置
  • 配置Spring MVC标准bean,如ViewResolver,MessageSource等
  • 配置应用程序的数据库属性
  • 在我们开始使用它之前建立数据库层并确保基础数据库连接到位(EntityManagerFactory,TransactionManager等)

这不是最终的列表,对于企业应用程序,上面的列表可能会更长,在较高的层面上,这是一些配置的样子:

public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext servletCxt) { // Load Spring web application configuration AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext(); ac.register(AppConfig.class); ac.refresh(); // Create and register the DispatcherServlet DispatcherServlet servlet = new DispatcherServlet(ac); ServletRegistration.Dynamic registration = servletCxt.addServlet("app", servlet); registration.setLoadOnStartup(1); registration.addMapping("/app/*"); } }

对于传统的web.xml配置来注册和初始化DispatcherServlet:

<web-app> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/app-context.xml</param-value> </context-param> <servlet> <servlet-name>app</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value></param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>app</servlet-name> <url-pattern>/app/*</url-pattern> </servlet-mapping> </web-app>

这些配置会根据第三方API不断增加:

  • 配置并使用JPA或Hibernate
  • 创建DB配置
  • 其他API的配置

这些步骤需要初始项目配置,但是它们会在项目或应用程序生命周期中增加其他复杂性:

  • 每个模块都有自己的配置
  • 每个模块都有自己的依赖项集(第三方依赖项)
  • 升级应用程序(例如Spring 4.x到5.x)将很复杂,因为我们需要确保正确升级所有必需的依赖项
  • 如果某些依赖项无法正常工作,那么尝试在大型应用程序中查找根本原因非常复杂且具有挑战性
  • springboot提供了一个工具集来处理这些问题,让我们专注于编写业务规则而不是项目配置

2.2:springboot自动配置 -智能体系

springboot的一个强大功能是它能够根据我们添加到类路径中的jar依赖项自动配置我们的应用程序。

springboot自动配置是一个智能体系,它可以根据我们类路径中配置的jar为我们提供随时可用的应用程序,例如,如果Spring Boot在类路径中找到HSQLDB,它将自动为我们配置内存数据库。

自动配置是一种固定的体系,它根据类路径配置为我们创建一些默认值,但同时,它足够智能,可以让我们灵活地覆盖它。

自动配置是非侵入性的,在任何时候,你都可以定义自己的配置以替换自动配置的特定部分,例如,如果添加自己的DataSource bean,则默认的嵌入式数据库支持会退出。

2.3:springboot Starters –智能体系

springboot Starters是一组方便易用的依赖描述符,可以轻松包含在任何级别的应用程序中,这些启动器作为Spring相关技术的引入程序,我们不再需要担心依赖关系,它们将由springboot Starters自动管理。

为了更好地理解,我们举一个例子,使用springboot构建一个Web应用程序。 如果要使用springboot,我们只需要在我们的pom.xml中添加spring-boot-starter-web启动器即可:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>

pom.xml中的上述条目将确保所有必需的依赖项都在类路径中,并且设置了Web应用中开始工作的所有配置 如果查看IDE,则可能在依赖项部分下具有类似的输出:

总结

在这篇文章中,我们对springboot和springmvc进行了对比分析,我们了解到springboot和springmvc是完全不同的,并且很好地相互补充,springboot提供了一个工具集,可以快速创建Spring应用程序。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PersistentCoder 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
微服务平台 TSF
微服务平台(Tencent Service Framework,TSF)是一个围绕应用和微服务的 PaaS 平台,提供一站式应用全生命周期管理能力和数据化运营支持,提供多维度应用和服务的监控数据,助力服务性能优化。提供基于 Spring Cloud 和 Service Mesh 两种微服务架构的商业化支持。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档