Spring,Spring MVC,Spring Boot 的区别与联系

492 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

本文主要讲的就是 Spring,Spring MVC,以及 Spring Boot 他们解决的问题是什么,要知道它们并不是一个相互竞争的状态,而是可以非常好的应用在不同的场景。

Spring 解决了什么问题?

Spring 中的核心功能是 IOC 和 DI,适当的使用 IOC 和 DI 可以写出低耦合的应用程序,而这可以使单元测试变的很方便。

另外,Spring 还基于 DI 提供了很多功能模块,比方说,Spring JDBC,Spring MVC,Spring AOP, Spring ORM, Spring JMS, Spring Test,可能不是每一个模块你都需要。但是这些模块的使用都可以减少大量重复的代码,并提高单元测试效率。

最后就是 Spring 可以很方便的与其它的框架进行集成。不管是 Hibernate,Mybatis 或是 Junit。

Spring MVC 解决了什么问题?

Spring MVC框架提供了开发 web 应用程序的解耦方法。通过 Dispatcher Servlet、ModelAndView 和视图解析器等简单概念,可以轻松地开发 web 应用程序。

我们为什么需要 Spring Boot?

基于 Spring 的项目有很多的配置。当使用 Spring MVC 时,我们需要配置组件扫描,前段控制器 Servlet,视图解析器。当使用 Hibernate 时,我们需要配置数据源,实体工厂,事务管理等。

1 Spring Boot 自动配置

Spring Boot 可以查看类路径上可用的框架以及应用程序的现有配置。基于这些,Spring Boot 提供了使用这些框架应用程序所需的基本配置。这就是所谓的自动配置。

即如果发现在 classpath 下有 Hibernate 或是 Spring MVC 的 jar 包,则会自动配置 dataSource 和 Dispatcher Servlet。

2 Starter 模块自动构建项目依赖

在我们新启动一个项目的时候,我们需要进行技术选型,然而不同模块的技术之间也要考虑版本是否兼容问题,有了 starter 模型,我们再也不用自己处理版本问题了,Spring Boot 提供了一站式的解决方案。

假如我们要搭建一个 web 项目,我们就可以使用 Spring Boot Start Web 模块。

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

这一个依赖里面就包含了我们搭建 web 项目所用的基本依赖,作为开发人员,我们不需要考虑选择什么依赖以及什么版本的依赖。

不仅仅只有 web 模块,我们还可以选择其它的 starter 模块,比方说 test, jdbc, security, data-jpa 等,Spring Boot 的目标就是尽快的让你构建出一个项目。