JAVA语言之从Spring MVC 到 Spring BOOT的简化道路
赵泽红 2019-04-10 来源 : 阅读 723 评论 0

摘要:本文主要向大家介绍了JAVA语言之从Spring MVC 到 Spring BOOT的简化道路,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之从Spring MVC 到 Spring BOOT的简化道路,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

从Servlet技术到Spring和Spring MVC,开发Web应用变得越来越简捷。但是Spring和Spring MVC的众多配置有时却让人望而却步,相信有过Spring MVC开发经验的朋友能深刻体会到这一痛苦。因为即使是开发一个Hello-World的Web应用,都需要我们在pom文件中导入各种依赖,编写web.xml、spring.xml、springmvc.xml配置文件等。

特别是需要导入大量的jar包依赖时,我们需要在网上查找各种jar包资源,各个jar间可能存在着各种依赖关系,这时候又得下载其依赖的jar包,有时候jar包间还存在着严格的版本要求,,所以当我们只是想开发一个Hello-World的超简单的Web应用时,却把极大部分的时间在花在了编写配置文件和导入jar包依赖上,极大地影响了我们的开发效率。

所以为了简化Spring繁杂的配置,Spring Boot应运而生。正如Spring Boot的名称一样,一键启动,Spring Boot提供了自动配置功能,为我们提供了开箱即用的功能,使我们将重心放在业务逻辑的开发上。

那么Spring Boot又是怎么简化Spring MVC的呢?Spring Boot和Spring、Spring MVC间又是怎样的关系呢?Spring Boot又有什么新特点呢?

接下来,让我们走进Spring MVC 到Spring Boot的简化之路,或许你就能找到这些答案。

Spring vs Spring MVC vs Spring Boot

Spring Boot和Spring、Spring MVC不是竞争关系,Spring Boot使我们更加容易使用Spring和Spring MVC

Spring FrameWork

Spring FrameWork解决的核心问题是什么 Spring框架的最重要特性是依赖注入,所有的Spring模块的核心都是依赖注入(DI)或控制反转(IOC)。为什么很重要呢,因为当我们使用DI或IOC时,我们可以使应用得到解耦。我们来看一个简单的例子:

没有依赖注入的例子:

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

使用依赖注入的例子:

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

Spring 还能解决什么问题

  1. 重复代码

Spring框架停止了依赖注入(DI)吗?没有,它在依赖注入(DI)的核心概念上开发了许多Spring模块:

Spring JDBC

Spring MVC

Spring AOP

Spring ORM

Spring Test

...
考虑一下Spring JDBC,这些模块带来了新功能吗?并没有,我们完全可以使用Java代码完成这些工作。那么,它们给我们带来了什么?它们带来了简单的抽象,这些简单抽象的目的是:

减少样板代码/减少重复

促进解耦/增加单元可测性 例如:与传统的JDBC相比,我们使用Spring JDBC需要编写的代码减少了许多。

  1. 与其他框架良好的集成

Spring框架并不尝试去解决已经解决了的问题,它所做的一切就是提供与提供出色解决方案的框架的完美集成。

Hibernate

IBatis

JUnit

...

Spring MVC

Spring MVC框架解决的核心问题是什么 Spring MVC框架提供了开发Web应用的分离方式。通过DispatcherServlet、ModelAndView、View Resolver等简单概念,是Web应用开发变得更加简单。

为什么需要Spring Boot

基于Spring的应用程序有很多配置。当我们使用Spring MVC时,我们需要配置组件扫描,调度器servlet,视图解析器等:

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

Spring Boot解决的问题

  1. Spring Boot 自动配置

Spring引入了新的思维过程:我们可以变得更加智能些吗?当一个spring mvc jar包被添加到应用程序时,我们是否可以自动配置一些bean?

当Hibernate jar包在类路径时,自动配置数据源怎样?

当Spring MVC jar包在类路径时,自动配置Dispatcher Servlet怎样?

Spring Boot查看ClASSPATH上对于本应用程序需要编写配置的框架,基于这些,Spring Boot提供了这些框架的基本配置-这就是自动配置。

  1. Spring Boot Starter Projects

假设我们想开发一个Web应用程序。首先,我们需要确定我们想要使用的框架,使用哪个版本的框架以及如何将它们连接在一起。所有Web应用程序都有类似的需求 下面列出的是我们在Spring MVC中使用的一些依赖关系。这些包括Spring MVC,Jackson Databind(用于数据绑定),Hibernate-Validator(用于使用Java验证API的服务器端验证)和Log4j(用于日志记录)。在创建时,我们必须选择所有这些框架的兼容版本:

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

什么是Starter

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

我们来看Starter的一个示例 - Spring-Boot-Starter-Web

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

以下屏幕截图显示了添加到我们的应用程序中的不同依赖关系:

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

任何典型的Web应用程序都会使用所有这些依赖项.Spring Boot Starter Web预先打包了这些。作为开发人员,我们不需要担心这些依赖关系或兼容版本。

  1. Spring Boot Starter项目选项

正如Spring Boot Starter Web一样,Starter项目帮助我们快速入门开发特定类型的应用程序:

spring-boot-starter-web-services - SOAP Web服务

spring-boot-starter-web - Web和RESTful应用程序

spring-boot-starter-test - 单元测试和集成测试

spring-boot-starter-data-jpa - 带有Hibernate的Spring Data JPA

spring-boot-starter-cache - 启用Spring Framework的缓存支持

...

什么是Spring Boot 自动配置

前面已经初步介绍过,在这里详细介绍一下。
当我们启动Spring Boot应用程序时,我们可以在日志中看到一些重要的消息。

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

上面的日志语句显示了Spring Boot Auto Configuration的行为。

一当我们在应用中添加了Spring Boot Starter Web依赖,Spring Boot AutoConfiguration就会发现Spring MVC在类路径下,它会自动配置dispatcherServlet,一个默认的错误页面和webjars。
如果你添加了Spring Boot DataJPA Starter依赖,Spring Boot AutoConfiguration会自动配置数据源(datasource)和实体管理器(Entity Manager)

Spring Boot Auto Configuration在哪里实现

所有的自动配置逻辑都在spring-boot-autoconfigure.jar中实现。mvc、data和其他框架的所有自动配置逻辑都存在与一个jar包中。

spring-boot-autoconfigure.jar中重要的文件是/META-INF/spring.factories,该文件;列出了在EnableAutoConfiguration key下启动的所有自动配置类。下面列出一些重要的配置类:

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

查看自动配置

打开调试日志
在application.properties打开调试日志:

JAVA语言之从Spring MVC 到 Spring BOOT的简化道路

当启动程序时,会打印自动配置日志信息

总结

Spring Boot的出现本身就是为了减低Web开发的门槛,使开发人员能够专注于业务开发,而不需浪费时间在业务开发之外,至此Spring MVC到Spring Boot的简化之路到此结束。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @职坐标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论
本文作者 联系TA

行是知之始,知是行之成,知行合一,方能大成。

  • 10
    文章
  • 1955
    人气
  • 100%
    受欢迎度

已有3人表明态度,100%喜欢该老师!

进入TA的空间
名师指导 直通车
  • 索取资料 索取资料 索取资料
  • 答疑解惑 答疑解惑 答疑解惑
  • 技术交流 技术交流 技术交流
  • 职业测评 职业测评 职业测评
  • 面试技巧 面试技巧 面试技巧
  • 高薪秘笈 高薪秘笈 高薪秘笈
TA的其他文章 更多>>
JAVA语言之Solr的工作原理以及如何管理索引库
经验技巧 100% 的用户喜欢
JAVA语言之Spring知识复习
经验技巧 0% 的用户喜欢
JAVA语言之mysql表锁、行锁、索引之间暧昧的关系
经验技巧 0% 的用户喜欢
JAVA语言之Git内部原理之Git引用
经验技巧 0% 的用户喜欢
JAVA语言之Java 11 正式发布,这 8 个逆天新特性教你写出更牛逼的代码
经验技巧 0% 的用户喜欢
其他海同名师 更多>>
刘新华
刘新华 联系TA
实力型。激情饱满,对专业充满热情
吴翠红
吴翠红 联系TA
独创“教、学、练、测”循环教学模式
吕益平
吕益平 联系TA
熟悉企业软件开发的产品设计及开发
黄泽民
黄泽民 联系TA
擅长javase核心技术
程钢
程钢 联系TA
擅长大型企业商业网站开发和管理
经验技巧30天热搜词 更多>>

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:13167058313
小职老师的微信号:13167058313

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    ICP许可  沪B2-20190160

站长统计