Spring MVC或Spring Boot [关闭]


114

对于大型公司(Web)项目,您是否建议使用Spring MVC或Spring-Boot?

与Spring MVC相比,就配置而言,Spring-Boot非常容易。

我想知道我使用Spring-Boot是否可以具有Spring MVC的相同优势吗?

您有什么推荐的吗?


29
选择不是 MVC和Boot 之间,因为Boot 可以使用MVC(并对其进行自动配置)。如果您的意思是“引导或无引导?” 那么这取决于公司对创新(以及相关风险)的开放程度。无论哪种方式,要求建议题外话这里。
kryger 2015年

感谢您的答复。我意识到可以将spring boot配置为spring mvc。但是我对使用Spring-Boot还是Spring MVC都具有相同的特性感到困惑(Spring引导易于设置)。根据您的使用经验?
迭戈

1
Spring Boot节省您的时间来配置具有默认bean的应用程序并管理依赖项。但是,spring-boot和spring-mvc具有不同的目标。如果您想将spring-boot与spring-mvc一起使用,则可以并且不需要进行任何设置,除非您想覆盖自定义配置。
Eddú梅伦德斯

感谢您的答复。对于我的未来项目,将使用Spring -Boot。我认为Spring-Boot易于配置并节省大量时间。
迭戈

2
弹簧靴与war包装和外部servlet容器并不兼容,请参阅58.2包装可执行jar和war文件
Nicolas Labrot 2015年

Answers:


106

我个人的建议是出于多种原因一定要使用Spring Boot。

  1. 首先是Boot是“春天的未来”。这意味着使用Boot可以从Spring社区的许多承诺中受益。今天的大多数Spring项目都与Boot完全集成,甚至社区也开始基于Boot开发许多应用程序。例如用于管理和监视。我可以建议看一下Spring Boot Admin

  2. 使用Spring Boot,您可以受益于非常好用的功能,例如用于管理和监视的执行器和远程外壳,通过非常有用的生产就绪功能来改善您的应用程序。

  3. 非常好用且功能强大的属性和配置控件-您可以用application.properties/yml 一种非常简单且令人印象深刻的方式来配置应用程序并扩展引导,即使在覆盖方面的管理也非常强大。

  4. 它是第一个支持微服务的平台,在我看来,这是最好的!即使您没有使用引导来构建微服务项目,您也可以使用现代方法受益,在这种方法中,您将拥有一个自动一致的jar,可以从我上面介绍的所有功能中受益,或者您可以选择强制实施将其包装为经典战争,然后将战争部署在所需的任何容器中。

  5. 使用智能和约定优于配置的方法,可以大大减少项目的启动和配置阶段。实际上,您具有一组简化的Maven或Gradle依赖项,可以简化依赖项管理。然后,借助自动配置特性,您可以受益于Spring 4中通过条件配置框架引入的许多标准配置。您可以使用特定的配置来覆盖它,而只需按照您在Windows 2000中看到的约定定义bean。引导依赖项的自动配置JAR。请记住,Spring是开源的,您可以看到代码。我认为文档也不错。

  6. Spring初始化器是一个很酷的工具,可通过以下链接获得:https : //start.spring.io/是一个非常酷的工具,用于以非常快速的方式创建您的项目。


我希望这种思考可以帮助您确定最佳解决方案。


1
谢谢你的回答。我在这里有些困惑。我想在项目中使用Spring 4,因为我不必使用persistence.xml配置文件和许多其他功能。我可以在弹簧靴中使用spring 4的功能吗?如果是的话,该怎么做
毒蛇

2
如果您打算做些非常普通的事情,我会倾向于同意。我尝试启动的次数使我头疼,并且在屏幕上大吼大叫,因为启动试图对我所拥有的依赖项过于精明,最终不得不做更多的事情来关闭设备,而不是打开设备。使用无引导项目。最终导致噩梦的几件事是试图与需要数据库缓存的LDAP一起使用,或者配置了多个DataSource引导,试图在我不知道的情况下创建JdbcTemplate和休眠实例,甚至自行启动h3数据库。
布雷特·瑞安

1
属性配置也是我尚未弄清楚如何控制的东西。在无启动项目中,我将创建一个AppConfig类,该类具有对读取我的应用属性文件中的属性的重载支持,我可以在JSP和SpEL中使用该属性,但是不知道如何在启动时执行相同的操作。
Brett Ryan

1
这个答案是否仍然有效(六个月后)?我正在研究这个问题,但我仍然不明白为什么人们在拥有出色的Spring Boot时仍会使用Spring?我的意思是我非常喜欢Spring Boot,对自己进行配置的智能软件的想法对我来说真是太棒了,但我很困惑!再次,当人们拥有出色的Spring Boot时,为什么人们仍会使用Spring?
艾哈迈德·哈贾尔

1
@AhmadHajjar,对于一个新项目,我肯定会使用Spring Boot。目前,它是一个完全成熟的工具。但是请记住,人们仍然需要维护简单的Spring项目,其中一些可能会直接迁移到Boot,而另一些可能又太大了,以至于迁移过程会很痛苦。
Xtreme Biker

39

Spring Boot使用Spring MVC!当您导入spring-boot-starter-web jar时,它是自动配置的并可以使用。所以您基本上是在谈论是使用Spring Boot还是手动设置Spring Application ...


4
是的,+ 1,Spring引导只是自动配置工具,Spring mvc是Web框架
Plain_Dude_Sleeping_Alone

@Plain_Dude_Sleeping_Alone我知道Spring MVC是一个框架。您说Spring Boot只是一个自动配置工具,是否也可以将其视为框架?
杰西

@Jesse,他们两个都可以视为工具或框架。但是人们在这里强调的是Spring Boot确实是Spring mvc Web框架的工具。它会提供Spring mvc所需的现成配置,尽管赃物本身是一种框架形式。最后,我的英语太差了,甚至可能已经烫伤了你的脸。嘿嘿
Plain_Dude_Sleeping_Alone

24

你绝对可以去Spring Boot。我们已经开始使用Spring Boot来构建企业应用程序。它具有很多优点,下面列出了一些:

  1. 您的项目配置将非常简单。无需维护XML文件,您所需要了解的就是可以多么有效地使用application.properties文件。

  2. 提供许多默认实现,例如,如果您需要发送电子邮件,它提供了默认的实现 JavaMailSender

  3. Spring Hibernate和JPA集成将非常简单。

像这样有很多,您可以根据自己的需求进行探索。


非常感谢您的解释
迭戈

总是优先选择Spring Boot,因为您不必处理冗长的XML,而且它们利用了微服务架构
JorgeTovar,

10

您可以按@kryger所述将Spring MVC与spring boot一起使用,它们在它们之间不是互斥的,并且配置会更容易,我也建议您使用http://www.thymeleaf.org/这是模板框架。使用它就像使用JSP一样,但是thymeleaf与HTML无缝集成,因此您的代码看起来非常干净,您可以添加许多有用的功能。


8

我认为Spring Boot比MVC更有用,因为它具有许多优点和内置功能,使其比MVC更可靠。在Spring Boot中,大多数事情都是自动配置的,不需要像在MVC中那样编写那些xml,这样可以节省时间。

Spring Boot将war文件与Tomcat等服务器运行时捆绑在一起。这样可以轻松分发和部署Web应用程序。随着行业向基于容器的部署迈进,Spring Boot在这种情况下也很有用。

Spring MVC是Web应用程序框架。尽管您可以在没有Spring Boot的情况下完成Spring的所有工作,但是Spring Boot可以帮助您更快地完成工作。

Spring Boot简化了您的Spring依赖关系,没有更多版本冲突,可以在没有应用程序容器的情况下直接从命令行运行,使用更少的代码即可构建更多内容-不需要XML,甚至不需要web.xml,自动配置,运行时有用的工具在生产中,数据库初始化,特定于环境的配置文件,收集度量。

可以在这里找到Spring Boot的基础知识


谢谢你的回答。这对于了解弹簧靴非常有帮助。我感到困惑的一件事是,如果必须更改所使用的Spring版本,该如何使用Spring Boot来做到这一点?我看不到任何定义了spring版本的地方。
毒蛇

您的项目中没有使用Maven吗?@viper
erginduran

是的,我已经使用过Maven。但是使用spring boot,我看不到那里的spring依赖关系。
毒蛇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.