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、Hibernate和MyBatis等。还可以享受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),集成 JUnit 和 Mock 框架。

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 :消息处理模型(如 Message、MessageChannel)。
  • Spring Instrumentation :JVM 级别的类加载器增强,用于应用服务器集成。
  • Spring Validation :数据校验框架 (结合 Hibernate Validator)。

总结

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

相关推荐
步行cgn2 小时前
Spring AOP 切面的先后顺序详解
java·spring
小尹哥-程序员3 小时前
第6集:RAG检索不准?3个参数调优路线图
人工智能·spring
java_nnnn3 小时前
Spring Boot 快速上手:从 Maven 到第一个 Controller
java·spring·java-ee·maven
卓怡学长4 小时前
w193基于springboot“乐通黄骅”电动车智能充电服务小程序
java·spring boot·spring·小程序·intellij-idea
shuoshuohaohao13 小时前
MyBatis 小知识点
java·spring·mybatis
苏supper17 小时前
Spring Boot多环境配置与打包运行
spring boot·后端·spring
wang_shu_mo_ran1 天前
Spring IoC和DI概念篇
java·后端·spring
驭渊的小故事1 天前
MyBatis 入门:从 JDBC 到优雅操作数据库(一)
笔记·sql·spring
萧瑟余晖1 天前
Spring IoC容器与Bean生命周期详解
spring
Wx-bishekaifayuan1 天前
springboot房屋租赁系统11574-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·sql·spring·课程设计