Spring基础:Spring组件有哪些

Spring 框架包含多个核心组件和模块,涵盖从基础依赖注入到企业级应用开发的各个方面。以下是 Spring 的主要组件及其功能分类:


1、核心容器(Core Container)

  • Beans模块 :框架的基础部分,包括控制反转和依赖注入。
    • Spring Beans:实现 Bean 的创建、配置和管理,支持基于 XML 或注解的配置。
  • Core核心模块 :封装Spring框架底层部分,包括资源转换、类型转换以及一些常用工具类。
    • 提供控制反转(IoC)依赖注入(DI)的基础实现,核心接口如 BeanFactory 管理对象生命周期和配置。
    • BeanFactory :基础容器接口,通过依赖注入(DI)实现对象创建和配置的低耦合。
    • ApplicationContext:扩展了BeanFactory,增加了国际化、事件传播、资源加载等企业级功能。
    • Bean组件 :负责Bean的定义、创建和解析,通过工厂模式(如BeanFactory)实现对象管理。
  • Context上下文模块 :建立在Beans和Core模块之上,集成Beans模块功能并添加资源绑定、数据验证、国际化、Java EE支持、容器生命周期、事件传播等。
    • Spring Context(ApplicationContext) :扩展 BeanFactory,提供国际化、事件传播、资源加载等企业级功能。
  • Spring Expression Language(SpEL模块) :提供强大的表达式语言支持。运行时查询和操作对象的表达式语言,支持在配置中动态赋值。
    • 支持访问修改属性值,方法调用
    • 支持访问及修改数组、容器跟索引器,命名变量
    • 支持算数跟逻辑运算
    • 支持从Spring容器获取Bean
    • 支持列表投影,选择和一般的列表聚合

2、AOP与切面编程

  • AOP模块 :提供面向切面编程实现 ,提供如日志记录、权限控制、性能统计等通用功能和业务逻辑分离技术,并且动态将这些功能加入到代码中,各司其职,降低业务逻辑和通用功能耦合
  • Aspects模块 :提供与 AspectJ 的集成,是一个功能强大且成熟的面向切面编程(AOP)框架
  • Instrumentation模块 :提供了类工具的支持和类加载器的实现,可以在特定的应用服务器中使用。
  • messaging模块 :Spring 4.0 以后新增了消息(Spring-messaging)模块,该模块提供了对消息传递体系结构和协议的支持。
  • jcl模块 :Spring 5.x中新增了日志框架集成的模块。

3、数据访问与集成(Data Access/Integration)

  • JDBC模块 :提供了一个JDBC的样例模板 。简化 JDBC 操作,提供模板类(如 JdbcTemplate)和异常统一处理。
    • 这些模版能消除冗长的JDBC编码还有必须得事物控制,而且能享受Spring管理事物的好处。
  • ORM模块 :提供与流行的"对象-关系"映射框架无缝集成的API
    • 包括JPA、JDO、HibernateMyBatis等。还可以享受Spring事物管理和Session,无需额外控制事物。
  • OXM模块 :提供一个支持Object/XML映射的抽象层实现 ,如JAXB、Castor、XMLBeans、JiBX和Stream
    • Java对象映射成XML数据 ,或者将XML数据映射成Java对象
  • JMS模块 :支持Java消息服务,简化消息队列操作。提供一套"消息生产者、消息消费者"模版用于更加简单使用JMS,JMS用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
  • Transaction事务模块 :声明式事务管理(通过 @Transactional)和编程式事务的抽象接口。

4、Web模块

  • web模块 :提供基本Web开发集成特性
    • 例如多文件上传功能、使用Servlet监听器的IOC容器初始化以及Web应用上下文
  • Servlet模块 :提供一个Spring MVC Web框架实现。提供控制器、视图解析器、表单绑定等功能
    • Spring MVC框架提供了基于注解的请求资源注入、更简单的数据绑定数据验证等及一套非常易用的JSP标签,无缝与Spring及其他技术协作。
  • WebSocket模块 :提供简单接口,用户只要实现响应接口就可以快速搭建WebSocket Server,实现双向通讯。支持双向实时通信的 WebSocket 协议
  • WebFlux模块 :Spring5.x中引入的新的响应式web框架。不需要Servlet API,完全异步且非阻塞,通过Reactor项目实现了Reactor Streams规范。用于创建基于事件循环执行模型的完全异步且非阻塞的应用程序
  • Portlet模块:提供在Portlet环境中使用MVC实现,类似Web-Servlet模块功能。

5、安全(Security)

  • Spring Security :提供认证(如 OAuth2、JWT)、授权攻击防护(CSRF、XSS)等安全功能。

6、测试(Test)

  • Spring Test :支持单元测试和集成测试(如 @SpringBootTest),集成 JUnitMock 框架。

7. 扩展与生态项目

  • Spring Boot :快速构建生产级应用的脚手架,简化配置和部署(内嵌 Tomcat、自动配置)。
  • Spring Cloud微服务架构支持(服务发现、配置中心、熔断器等)。
  • Spring Data :统一数据访问抽象,支持 JPA、MongoDB、Redis、Cassandra 等数据源。
  • Spring Batch :批处理框架,适用于大数据量的定时任务处理
  • Spring Integration :企业集成模式(EIP)实现,支持消息驱动、通道适配器等。
  • Spring Session :分布式会话管理,支持 Redis、JDBC 等存储。
  • Spring GraphQL :集成 GraphQL,构建灵活高效的 API

8、其他重要模块

  • Spring Messaging :消息处理模型(如 MessageMessageChannel)。
  • Spring InstrumentationJVM 级别的类加载器增强,用于应用服务器集成
  • Spring Validation数据校验框架 (结合 Hibernate Validator)。

总结

Spring 的组件分为核心容器AOP数据访问Web安全测试等模块,同时其生态项目(如 Spring Boot、Cloud、Data)进一步扩展了企业级开发能力。回答时可结合具体应用场景(如微服务、响应式编程)突出相关组件的作用。

相关推荐
星星不打輰35 分钟前
Spring基于注解进行开发
java·spring
陈大爷(有低保)36 分钟前
Spring中都用到了哪些设计模式
java·后端·spring
程序员 小柴42 分钟前
SpringCloud概述
后端·spring·spring cloud
陈三一1 小时前
关于多数据源下Spring声明式事务管理失效问题的分析与解决
数据库·spring
2401_884810744 小时前
Spring-MVC笔记上(上)
笔记·spring·mvc
呦呦鹿鸣Rzh4 小时前
Spring MVC
java·spring·mvc
eternal__day5 小时前
Spring Boot 快速入手
java·spring boot·后端·spring·java-ee·maven
Foyo Designer7 小时前
【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的国际化:支持多语言的 RESTful API
java·spring boot·redis·后端·spring·缓存·restful
用键盘当武器的秋刀鱼9 小时前
springBoot统一响应类型3.5版本
java·spring boot·spring
栗筝i9 小时前
Spring 核心技术解析【纯干货版】- XV:Spring 网络模块 Spring-Web 模块精讲
前端·网络·spring