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)进一步扩展了企业级开发能力。回答时可结合具体应用场景(如微服务、响应式编程)突出相关组件的作用。

相关推荐
伊布拉西莫8 分钟前
Spring 6.x HTTP interface 使用说明
spring·restclient
YDS8292 小时前
苍穹外卖 —— Spring Cache和购物车功能开发
java·spring boot·后端·spring·mybatis
Elieal2 小时前
Spring 框架核心技术全解析
java·spring·sqlserver
组合缺一2 小时前
(对标 Spring)OpenSolon v3.7.0, v3.6.4, v3.5.8, v3.4.8 发布(支持 LTS)
java·后端·spring·web·solon
♡喜欢做梦3 小时前
Spring IOC
java·后端·spring
葡萄城技术团队12 小时前
迎接下一代 React 框架:Next.js 16 核心能力解读
javascript·spring·react.js
灰小猿13 小时前
Spring前后端分离项目时间格式转换问题全局配置解决
java·前端·后端·spring·spring cloud
知其然亦知其所以然19 小时前
这波AI太原生了!SpringAI让PostgreSQL秒变智能数据库!
后端·spring·postgresql
zhaomx19891 天前
Spring 事务管理 Transaction rolled back because it has been marked as rollback-only
数据库·spring
曹朋羽1 天前
Spring EL 表达式
java·spring·el表达式