Spring 体系结构

spring 核心特性

依赖注入

依赖注入(Dependency Injection)是一种在软件工程中广泛使用的设计模式,其主要思想是:

  1. 将对象依赖的其他对象传递进来,而不是在对象内部直接创建依赖的对象。

  2. 完成依赖对象的注入后,对象对依赖的控制权交给了调用方。

在Java中,依赖注入的实现方式主要有以下几种:

  1. 构造方法注入:通过构造方法的参数传递依赖对象。

  2. Setter方法注入:通过设置setter方法传入依赖对象。

  3. 接口注入:定义接口让调用方实现接口来注入依赖对象。

  4. 注解注入:通过注解指示哪些参数需要注入。

依赖注入的主要优点包括:

  1. 降低了对象之间的耦合度。

  2. 提高了代码的可测试性和可维护性。

  3. 提高了各模块的独立性和可重用性。

  4. 使得代码更加清晰,由调用方主动控制依赖对象的注入。

依赖注入在Spring框架中有着广泛的应用,是Spring实现IoC和控制反转的基础。正确使用依赖注入能够使代码更加健壮与易于维护。

面向切面编程

面向切面编程(Aspect Oriented Programming,缩写AOP)是一种编程范式,用于解决非功能性需求或跨越多个模块的功能性需求。其主要思想是:

  1. 把复杂系统分解成不同的部分(称为方面Aspect),各部分分别编码实现。

  2. 在运行时,通过“横切”的方式,动态将不同部分组合起来,以实现完整的功能和逻辑。

AOP的主要作用:

  • 将非业务关联逻辑 从业务代码中分离出来,如日志、安全、事务等。

  • 提高模块化程度,降低耦合。

  • 使系统易于维护和扩展。

AOP实现方式:

  • 编译期织入:在编译时,由编译器将Aspect代码插入业务代码中。

  • 类加载期织入:在类加载到JVM时,通过特殊处理将Aspect代码织入其中。

  • 运行期织入:在程序运行期间,通过反射和代理方式实现代码的织入。

AOP与OOP的对比:

  • OOP采用横向抽象,以类为模块单元,适合实现与业务功能强相关的需求。

  • AOP采用纵向抽象,以切面为模块单元,适合实现与业务功能松耦合的需求。

AOP与OOP可以很好地配合使用,优化软件设计,使系统的可维护性更好。

Spring 体系结构

核心容器

核心容器由 spring-core,spring-beans,spring-context,spring-context-support和spring-expression(SpEL,Spring 表达式语言,Spring Expression Language)等模块组成,它们的细节如下:

  1. spring-core:
  • 定义了Spring框架的基本组成部分,如IoC和DI功能。
  • 包含访问配置文件、创建和管理bean等基础部分。
  1. spring-beans:
  • 提供BeanFactory,是Spring IoC容器的基础。
  • 定义了Bean对象、属性编辑器、Bean的作用域等概念。
  1. spring-context:
  • 继承BeanFactory,是ApplicationContext的核心实现。
  • 添加了对i18n、事件传播、资源加载和透明创建上下文(AOP概念)等的支持。
  1. spring-context-support:
  • 对spring-context的补充,提供集成第三方库的包。
  • 包含邮件服务、JNDI定位、任务调度等模块。
  1. spring-expression:
  • 提供Spring Expression Language表达式语言功能。
  • 可以在XML或注解中使用SpEL表达式进行依赖注入等。

总结:

  • spring-core和spring-beans提供DI和IoC容器基础。
  • spring-context建立在其基础上,提供应用级别的功能。
  • spring-context-support提供第三方集成支持。
  • spring-expression提供表达式语言的评估与处理。

数据访问/集成

Spring的数据访问/集成层主要包含以下模块:

  1. JDBC模块:
  • 提供了JdbcTemplate类,可以方便地处理JDBC代码而无需繁琐的JDBC编码工作。
  • 处理了资源的建立和释放,并能将数据库异常转换为unchecked异常。
  1. ORM模块:
  • 支持流行的ORM框架,如Hibernate、JPA等。
  • 提供了一致的声明式事务管理。
  • 整合了ORM框架的异常体系到Spring的通用DataAccessException异常体系中。
  1. OXM模块:
  • 提供对对象XML映射支持,如JAXB、Castor、XMLBeans、JiBX、XStream等。
  • 使得XML可以与Java对象间进行bidirectional转换。
  1. JMS模块:
  • 包含生产和消费信息等功能。
  • 大大减少了使用JMS API的代码量。
  1. 事务管理模块:
  • 对事务管理提供一致的编程模型。
  • 支持声明式事务管理。
  • 支持编程式和声明式事务管理的统一抽象。

综上,通过这些模块,Spring大大简化了数据库和其他系统间的集成过程,为访问和操作数据提供了便捷与支持。

web

Spring的Web层主要包含以下模块:

  1. Web模块:
  • 提供基本的Web开发集成特性,如文件上传和基于Servlet监听器的IoC容器初始化。
  • 集成Servlet API和JSP,可以使用Spring的中间层实现Web应用。
  1. Web MVC模块:
  • 也称Spring MVC,是Spring自己的Web框架。
  • 基于模型-视图-控制器(MVC)设计模式,灵活且强大。
  • 包含REST Web服务、数据验证、格式化、本地化等功能。
  1. Web Socket模块:
  • 提供对WebSocket协议的完整支持。
  • 可对WebSocket会话进行STOMP消息传输、管理。
  • 支持SockJS模拟WebSocket环境。
  1. Web Portlet模块:
  • 提供在Portlet环境中使用MVC实现的组件。
  • 包括Portlet API和Portlet MVC框架适配器。
  • 支持Portlet应用在各种Portlet容器中运行。

总结:

  • Web模块提供基础Web集成支持。
  • Web MVC模块提供了Spring的MVC框架。
  • Web Socket模块用于WebSocket开发。
  • Web Portlet模块在Portlet环境使用Spring MVC。

这些模块为Web应用提供了完整和全面的支持。

posted @   卓亦苇  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示