spring家族体系简介

原创
05/16 05:57
阅读数 46

1spring

1.1基本介绍

        spring是一个开源框架,兴起于2003年的一个轻量级的Java开发框架,spring是为了解决企业级应用开发的复杂性而创建的,使用spring可以让简单的JavaBean实现之前只有EJB才能完成的事情,spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从spring中获益。

1.2 spring的七大模块

(1)核心容器(Core):核心容器提供Spring框架的基本功能,核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

(2)Spring上下文(Context):Spring上下文是一个配置文件,向Spring框架提供上下文信息。有了Spring上下文,我们就可以通过其将配置加载到IOC容器,让Spring替我们管理对象,待我们需要使用对象时,再从容器中获取bean就可以了,对于上下文抽象接口,Spring也为我们提供了多种类型的容器实现,供我们在不同的应用场景中使用:

  • AnnotationConfigApplicationContext:从一个或多个基于java的配置类中加载上下文定义,适用于java注解的方式
  • ClassPathXmlApplicationContext:从类路径下的一个或多个xml配置文件中加载上下文定义,适用于xml配置的方式
  • FileSystemXmlApplicationContext:从文件系统下的一个或多个xml配置文件中加载上下文定义,也就是说系统盘符中加载xml配置文件
  • AnnotationConfigWebApplicationContext:专门为web应用准备的,适用于注解方式
  • XmlWebApplicationContext:从web应用下的一个或多个xml配置文件加载上下文定义,适用于xml配置方式

(3)AOP:我们通常称为面向切面编程,所谓切面是相对于面向对象来说的,面向对象是将实物抽象为对象,这是个纵向的概念。而面向切面是一个横向的概念,它更加关注那些散落在代码中公用的不涉及具体业务逻辑的通用处理方式,例如日志、权限验证以及统一异常处理等等。核心思想就是将与业务逻辑无关的进行统一的框架织入,不对原有代码以及业务逻辑造成侵入。

通过@Aspect来将类定义为一个切面,它就是切点与通知的结合,如下图所示:

通知:通俗地说,就是我们需要实现的功能,可以分为前置、后置、异常、最终以及环绕通知这五类。例如日志,权限等业务逻辑。

  • 前置通知:在目标方法或者连接点被调用前执行通知操作;
  • 后置通知:在某些连接点执行完成之后进行通知操作;
  • 异常通知:在方法抛出异常退出当前时进行通知操作;
  • 最终通知:当切入点退出时无论是方法正常执行结束还是异常抛出后退出执行的通知操作;
  • 环绕通知:包围一个切点的通知,如方法调用。这是最强大的一种通知类型。环绕通知可以在方法调用前后完成自定义的行为。它也会选择是否继续执行连接点或直接返回它自己的返回值或抛出异常来结束执行。

(4)DAO (Data Access Object)提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。 并且,JDBC封装包还提供了一种比编程性更好的声明性事务管理方法,不仅仅是实现了特定接口,而且对所有的POJOs(plain old Java objects)都适用(POJOs实际上就是普通的JavaBeans)。

(5)ORM全称是对象关系映射(Object/Relation Mapping),指将Java对象状态自动映射到关系数据库中的数据上,从而提供透明化的持久化支持,即把一种形式转化为另一种形式。

spring中支持ORM的框架有hibernate、mybatis、JPA等,但是其中JPA是一种规范,hibernate和mybatis都遵循JPA规范。

(6)Web 上下文模块建立在应用程序上下文模块之上,提供了Servlet监听器的Context和Web应用的上下文,简化了处理多部分请求以及将请求参数绑定到域对象的工作。

(7)SpringWebMVC模块建立在Spring核心功能之上,拥有Spring框架的所有特性,能够适应多种多视图、模板技术、国际化和验证服务,实现控制逻辑和业务逻辑的清晰分离。

         SpringMvc是spring基础上的一个MVC框架,主要处理web开发的路径映射和视图渲染,属于spring框架中web层开发的一部分。

1.3 spring源码下载

git地址:https://github.com/spring-projects/spring-framework.git

通过eclipse的git插件将源码下载至本地即可,如下图所示:

2 springboot

2.1基本介绍

        springboot是spring家族中的一个全新框架,于2014年4月发布1.0版本,2016年在国内开始真正的使用起来,它用来简化spring应用程序的创建和开发过程,也可以说springboot能简化我们之前采用spring+springmvc+mybatis框架进行开发的过程。

       以往我们在采用SSM框架进行开发的时候,搭建和整合三大框架,我们要做很多工作,比如配置web.xml、配置spring、配置mybatis,并将它们整合到一起等,而springboot框架对此开发过程进行了革命性的颠覆,抛弃了繁琐的XML配置过程,采用大量的默认配置简化了我们的开发过程。正因为springboot它化繁为简,让开发变得极其简单和快捷,所以在业界备受关注。

2.2 springboot主要特点

  • 让所有spring开发者更快的入门
  • 开箱即用,提供各种默认配置来简化项目配置
  • 内嵌式容器简化Web项目
  • 没有冗余代码生成和xml配置

2.3 springboot快速整合第三方框架的原理

通过maven父子工程的方式,即maven继承依赖关系。

3 springcloud

3.1 基本介绍

    springcloud是基于springboot的一整套实现微服务的框架。

​​​​​​​3.2 什么是微服务架构

      微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。

      如下图所示,传统架构与微服务架构的区别:

(1)传统构架

(2)微服务构架

​​​​​​​3.3 微服务架构使用场景及功能说明

(1)我们把整个系统根据业务拆分成几个子系统。

(2)每个子系统可以部署多个应用,多个应用之间使用负载均衡。

(3)需要一个服务注册中心,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。

(4)所有的客户端都通过同一个网关地址访问后台的服务,通过路由配置、网关来判断一个URL请求由哪个服务处理,请求转发到服务上的时候也使用负载均衡。

(5)服务之间有时候也需要相互访问。例如有一个用户模块,其他服务在处理一些业务的时候,要获取用户服务的用户数据。

(6)需要一个断路器,及时处理服务调用时的超时和错误,防止由于其中一个服务的问题而导致整体系统的瘫痪。

(7)需要一个监控功能,监控每个服务调用花费的时间等。

3.4 雪崩效应

在微服务架构中,服务与服务之间相互调用、相互依赖,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,servlet容器的线程资源就会被消耗殆尽,导致整个微服务系统的瘫痪,这就是服务故障的‘雪崩’效应。

​​​​​​​3.5 熔断机制

    熔断机制是雪崩效应的解决方案,基于springcloud Hystris解决雪崩效应

​​​​​​​3.5.1服务降级

    防止用户一直等待,采用服务降级的方式,给用户返回友好提示,不会去处理具体请求,如给用户返回:当前请求人数过多,请稍后重试。

​​​​​​​3.5.2 服务熔断

    和服务降级一起使用,目的是为了保护服务,在高并发的情况下,如果请求达到了一定的极限(自己设置的预期值),则自动开启服务保护功能,使用服务降级的方式,返回友好提示。

​​​​​​​3.5.3 springCloud系统架构参考图

 

4 spring、springboot和springcloud之间的关系

4.1 spring与springboot的关系

    springboot是对spring的一个升级,并不是对spring功能上的增强,而是提供了一种快速使用spring的方式:开箱即用、没有代码生成、无需XML配置。

​​​​​​​4.2 springboot和springcloud的关系

    springcloud是基于springboot的一整套实现微服务的框架,Spring boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring boot,二者属于依赖的关系。

    举例:boot就是医院里面一个一个的科室,而Cloud就是把boot组合起来的对外提供服务的综合医院。 

(1)springcloud必然依赖于springboot,属于依赖关系。  

(2)springboot专注于快速方便的开发单个个体微服务。 

(3)springcloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等集成服务。

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部