浅谈Spring 架构|求求远古版本的别出来误导别人了

很久之前,Java的系统是使用企业级JavaBean(Enterprise JavaBean, EJB)进行开发的,EJB使用起来很为困难,Spring作为一款轻量级的框架,迅速替代了EJB


EJB也是个神器,只见其影,未见其身。前些年,在网上各个面试题还有它的身影,现在估计很难见到了。

EJB:Enterprise Java Beans,即:企业Java Beans

Sun公司发布的文档中对 EJB 的定义是:EJB 是用于开发和部署多层结构的、分布式的、面向对象的 Java 应用系统的跨平台的构件体系结构。

简单来说,EJB就是部署分布式系统用的,就是把A程序放在服务器上,通过B客户端来调用,并且是跨平台的。

img

图来源:oreilly.com

因为 EJB 过于复杂和笨重,调试非常麻烦,现在都被轻量级的 RPC 框架(Dubbo)及轻量级 Restful 形式的分布式框架 (Spring Cloud) 替代了。关注微信公众号Java技术栈在后台回复分布式可以获取分布式架构系列教程。

源自https://blog.csdn.net/youanyyou/article/details/107487834


Spring为什么牛?

  • Spring的目标是一个低耦合、高内聚的框架,若你看过spring的源码,Spring内部大量使用了面向对象的原则以及各种设计模式,将各个模块使用最低耦合度的方式组合在一起,十分灵活。
  • 提出了IOC(控制翻转、又称DI,依赖注入)来管理各个组件之间的依赖关系
  • 提供面向切面编程的模式(AOP)
  • 不断研发生态,全面支持微服务体系

Spring官方描述

spring-overview-1

Spring是一款面向Bean编程的容器,Spring的核心目的就是做到了Bean的管理(IOC容器),以及依赖的注入(又称控制反转,IOC),这些是Spring容器的核心(Core Container),其他的部件以此为基础进行开发。

每个模块的功能如下:

网上流传的这几条感觉起来有点偏离了实际,本人做了修改与扩充(版本:spring5)

Spring Core Container(核心容器)
核心容器提供 Spring 框架的基本功能,该部分是整个spring体系的基石。

  • Beans模块
    1. 包含最为基本的IoC容器BeanFactory(工厂设计模式)的接口与实现。如:XmlBeanFactory(支持通过XML文件定义的Bean定义信息)。
    2. 提供了一个容器系列,如(SimpleJndiBeanFactory、StaticListableBeanFactory等)。
  • Core模块
    1. 提供Resource对容器的资源进行抽象,并提供访问资源的途径
    2. 极其丰富的工具类、开发者可以看看这里的工具包来使用,很方便
  • Spring Context(上下文):
    1. 设计了IoC容器的高级形态ApplicationContext应用上下文供用户使用,(FileSystemXmlApplication、ClassPathXmlApplicationContext)对应用来说,是IoC容器中更面向框架的使用方式。
    2. 提供了缓存、格式、日期、jmx、验证(@Validated)的定义与简单实现

Spring AOP
通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

  • 实现原理(利用Java动态代理、Cglib生成代理类,通过BeanPostProcessor挂在目标类上)
  • 实现了一个完整的建立AOP代理对象,实现AOP拦截器,直至实现各种Advice通知的过程
  • Spring集成其他模块的工具(如声明式事务管理)

Spring DAO
JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

  • Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。
    1. 对JDBC做了一层封装,使通过JDBC完成对数据库的操作更加简洁。提供JdbcTemplate(Spring大多数的外接功能,http,redis等等等等,都是Template)
    2. 提供ORM工具的封装(Hibernate、iBatis)
  • 提供事务支持。通过SpringAOP实现自身功能增强的典型模块
    1. 把在企业应用中事务处理的主要过程抽象出来,简洁地通过AOP的切面增强实现了声明式事务处理功能。
    2. 与具体的事务处理器实现无关。
    3. 通用的实现声明式事务处理的过程,配置拦截器、读入配置、事务创建、挂起、提交、回滚

Spring Web 模块
Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

  • Spring MVC 框架:
    MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。以DispatcherServlet为核心,实现了MVC模式。拦截、分发、处理、返回数据。.

本文来自可怜工具人可乐可乐可-https://blog.csdn.net/weixin_44494373
更多精彩,点击查看

猜你喜欢

转载自blog.csdn.net/weixin_44494373/article/details/112701217