浅析Spring家族的前世今生

大家在开发Java的项目中常常不可避免的用到Spring框架相关的技术,那么你了解Spring家族了解多少呢?

 

Spring

 

Spring可以的简单定义它为一个轻量级的控制反转(IoC)、面向切面(AOP)的容器的Java 开发框架。

 

SpringMVC

 

  在此我觉得分开讲Spring与mvc可以更好地解释什么是SpringMvc:MVC为现代web项目开发的一种很常见的模式,简言之C(控制器)将V(视图、用户客户端)与M(模块,业务)分开构成了MVC ,业内常见的mvc模式的开发框架有StrutS1,StrutS2等。Spring作为专业的开发web项目的开源框架,SpringMvc为内部的一个模块环节,同样采取mvc设计模式。 所以在使用Spring开发web项目时,作为核心环节的MVC可以使用Struts、Struts2和SpringMVc。

 

Spring-boot

 

  我的理解是这样的、Spring系列大家族里面产品超级多了、那么使用Spring整合基础框架作为项目架构时,大多数初级人员在搭建项目时话费了很多时间也未必能搭建明白。 Spring-boot就是为了解决开发人员这个痛点而诞生的,说白了就是把以前的手动配置的过程自动化封装了,提供默认的配置,简而言之就是:

   简单易用,初学者和大牛都可以轻松上手,其中的注解会给使用者提供方便;

   Spring boot对第三方技术进行了很好的封装和整合,提供了大量第三方接口;

   可以通过依赖自动配置,不需要XML等配置文件

   还提供了安全等特性

  所以现在boot总结就是可以快速启动,快速构建项目,在配置文件环节省去大量时间和精力,傻瓜式带你进入项目大门,进行业务逻辑编写。现在跟很多框架整合了,所以按照规范去配置我们可以分分钟上手写代码。

 

Spring-cloud

 

  微服务是当前架构领域的热门话题,要想知道什么是Spring-cloud,麻烦先去弄清楚什么是微服务。 Spring-colud是一种云端分布式架构解决方案,基于Spring boot,在Spring boot做较少的配置,便可成为 Spring cloud 中的一个微服务。 不过可以简单理解为:Spring cloud也就是提供了一些常用的分布式组件,都是应用型的,就根Spring mvc差不多。

 

四者的联系

 

 Spring 最初利用“工厂模式”( DI )和“代理模式”( AOP )解耦应用组件。大家觉得挺好用,于是按照这种模式搞了一个 MVC 框架(一些用 Spring 解耦的组件),用开发 web 应用( SpringMVC )。然后有发现每次开发都要搞很多依赖,写很多样板代码很麻烦,于是搞了一些懒人整合包( Starter ),这套就是 Spring Boot ,升级云-Spring Cloud:现在是大数据、云时代,上云是必然选择,那么Spring Cloud应运而生,

 

下面我们两两的详细的各个分析:

 

Spring和SpringMvc:

 

Spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(SpringMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;SpringMvc是Spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于Spring框架中WEB层开发的一部分;

 

SpringMvc和SpringBoot:

 

SpringMvc属于一个企业WEB开发的MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等,XML、config等配置相对比较繁琐复杂;SpringBoot框架相对于SpringMvc框架来说,更专注于开发微服务后台接口,不开发前端视图;

 

SpringMvc和SpringBoot:

 

SpringMvc属于一个企业WEB开发的MVC框架,涵盖面包括前端视图开发、文件配置、后台接口逻辑开发等,XML、config等配置相对比较繁琐复杂;SpringBoot框架相对于SpringMvc框架来说,更专注于开发微服务后台接口,不开发前端视图;从而去掉了的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;

 

SpringBoot和SpringCloud:

 

Spring boot使用了默认大于配置的理念,集成了快速开发的Spring多个插件,同时自动过滤不需要配置Spring和SpringMvc:Spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(SpringMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;SpringMvc是Spring基础之上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于Spring框架中WEB层开发的一部分;

 

总结:

 

1. Spring 框架就像一个家族,有众多衍生产品例如 boot、Security、jpa等等。但他们的基础都是Spring的ioc、aop等. ioc 提供了依赖注入的容器, aop解决了面向横切面编程,然后在此两者的基础上实现了其他延伸产品的高级功能;

 

2. SpringMvc是基于Servlet 的一个MVC框架主要解决WEB开发的问题,因为Spring的配置非常复杂,各种XML、JavaConfig、Servlet处理起来比较繁琐;

 

3. 为了简化开发者的使用,从而创造性地推出了SpringBoot框架,默认优于配置,简化了SpringMvc的配置流程;

但区别于SpringMvc的是,SpringBoot专注于微服务方面的接口开发,和前端解耦,虽然SpringBoot也可以做成SpringMvc前后台一起开发,但是这就有点不符合SpringBoot框架的初衷了;

 

4. 对于SpringCloud框架来说,它和SpringBoot一样,注重的是微服务的开发,但是SpringCloud更关注的是全局微服务的整合和管理,相当于管理多个SpringBoot框架的单体微服务;Spring boot只是一个配置工具,整合工具,辅助工具.Springmvc是框架,项目中实际运行的代码

 

 

 

 

你可能感兴趣的:(浅析Spring家族的前世今生)