最近在学习Spring框架,听说了很多名词,比如Spring、Spring Boot、Spring MVC、Spring Cloud等等。作为一个新手,实在是搞不明白它们到底有什么区别,经过几天的学习,简单地理清楚了他们的主要区别,下面做一个简单的记录,希望同样有疑问的小伙伴看完后可以大致明白它们之间的区别:
Spring:
Spring是一个框架,是Java历史中重要的组成部分,它主要有几种特性。一种是IoC(Inversion of Control)控制反转,其中最常见的方式就是DI(Denpendency Injection)依赖注入。还有一个比较重要的特性是AOP(Aspect-Oriented Programming)面向切面编程,就是这些特性使得计算机代码之间耦合度较松,实现了高内聚,低耦合的概念。当然现在EJB也采用了DI和AOP编程,但是Spring前进的更快了,比如有了Spring Cloud微服务等等。
所以简单来说Spring就是一个框架,它拥有着依赖注入和一些开箱即用的模块:
比如说Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test
Spring MVC
Spring MVC其实是Spring提供的一个模块,即使用了MVC架构模式的思想,将Web层进行职责解耦。简单的理解它主要的作用就是作为Controller层与前端进行交互,Spring MVC获取页面的信息,与后端功能进行交互并将一些信息返回前端。举个例子,登陆页面,Spring MVC获取到登陆信息与数据库作比对返回一个状态码,然后即可知道是否登陆成功。
Spring Boot
如果使用过Spring会知道Spring需要在maven和gradle中配置很多依赖,而有些依赖之间会发生冲突,这样对编程造成了很大的困扰,而Spring Boot是为解决此问题而生的,它主要有以下四个核心:
- 自动配置:针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置
- 起步依赖:告诉Spring Boot需要什么功能,他就能引入需要的库。
- 命令行界面:这是Spring Boot的可选特性,借此只需要写代码就成完成完整的应用程序,无需传统项目构建。
- Actuator:让你能够深入运行Spring Boot应用程序,一探究竟。
简单地说,Spring Boot就是一个比较智能的Spring,它将很多Spring中需要手动配置的东西转化为自动配置,让程序员不用再操心这些东西,所以我认为Spring Boot就是一个全自动的Spring(全自动可能有点夸张,但很自动了)
以上是我学习过程中的一些对于Spring、Spring Boot和Spring MVC的理解,如果有理解不对的地方恳请各位小伙伴以及大佬们提出,如果能对小伙伴们有一定的帮助那就再好不过了~