Spring框架源码分析之Spring核心思想讲解

简介: Spring框架源码分析之Spring核心思想讲解

前言


本篇文章是对Spring的核心思想讲解


后续将会以,以下顺序排列文章发布!


  1. Spring核心思想
  2. Spring源码编译
  3. 自定义实现Spring框架IOC与DI
  4. Spring源码Ioc核心模块分析
  5. BeanDefinition整体介绍
  6. FactoryBean接口的使用
  7. BeanFacotry体系结构
  8. ApplicationContext体系结构
  9. Spring中的Resouce资源
  10. 资源加载策略ResourceLoad
  11. BeanDefinitionReader加载过程


🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗




Spring 框架给我们带来什么样的好处


什么是 Spring

Spring 是一个轻量级 Java 开发框架,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的 JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发 Java 应用程序提供全面的基础架构支持。Spring 负责基础架构,因此 Java 开发者可以专注于应用程序的开发。Spring 最根本的使命是解决企业级应用开发的复杂性,即简化 Java 开发




Spring 给我们带来哪些好处


  • 帮我们进行管理 Bean,不需要我们自己手动 new 了
  • 创建完对象之后,能够帮我们自动赋值
  • 可以对创建出的 Bean 对象进行功能性的增强
  • 简化开发

上面所说的这些功能的底层都依赖于它的两个核心特性:依赖注入(dependency injection,DI)和面向切面编程(aspect-oriented programming,AOP)




Spring 简化开发 4 大策略


🐤基于 POJO 的轻量级和最小侵入性编程

之前是怎么写代码,还是怎么样的方式,不对之前的方式进行约束



🐂通过依赖注入和面向接口实现松耦合

依赖注入(DI):让 Bean 与 Bean 之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起

控制反转(IOC):Spring 里,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由 Spring 容器来完成,然后注入调用者,因此也称为依赖注入。改变一个模块不影响其他模块或者小影响



🌵基于切面和惯例进行声明式编程

动态添加功能,通过声明式代码增强让程序员只关心业务,声明式不需要指定步骤



🐱‍👤通过切面和模板减少样板式代码

内部提供好很多内置实现,把内置的实现封装成了模板



Spring 框架的设计目标,设计理念,和核心是什么


Spring 设计目标

Spring 为开发者提供一个一站式轻量级应用开发平台


Spring 设计理念

在 JavaEE 开发中,支持 POJO 和 JavaBean 开发方式,使应用面向接口开发,充分支持 OO(面向对象)设计方法;Spring 通过 IoC 容器实现对象耦合关系的管理,并实现控制反转(将对象的创建权交给了 Spring),将对象之间的依赖关系交给 IoC 容器,实现解耦


Spring 框架的核心

IoC 容器和 AOP 模块。通过 IoC 容器管理 POJO 对象以及他们之间的耦合关系;通过 AOP 以动态非侵入的方式增强服务。IoC 让相互协作的组件保持松散的耦合,而 AOP 编程允许你把遍布于应用各层的功能分离出来形成可重用的功能组件




Spring 的优缺点是什么


优点


🐱‍👤方便解耦,简化开发

Spring 就是一个大工厂,可以将所有对象的创建和依赖关系的维护,交给 Spring 管理


🌵AOP 编程的支持

Spring 提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能


🐂声明式事务的支持

只需要通过配置就可以完成对事务的管理,而无需手动编程


🐤方便程序的测试

Spring 对 Junit4 的支持,可以通过注解方便的测试 Spring 程序


🍺方便集成各种优秀框架

Spring 不排斥各种优秀的开源框架,其内部提供了对各种优秀框架的直接支持(如:Struts、Hibernate、MyBatis 等)


🦒降低 JavaEE API 的使用难度

Spring 对 JavaEE 开发中非常难用的一些 API(JDBC、JavaMail、远程调用等),都提供了封装,使这些 API 应用难度大大降低




缺点

  • Spring 明明一个很轻量级的框架,却给人感觉大而全
  • Spring 依赖反射,反射影响性能
  • 使用门槛升高,入门 Spring 需要较长时间




Spring 模块结构图


🐤Spring 总共大约 20 个模块

这些模块被整合在核心容器(Core Container)AOP 和设备支持、数据访问及集成、Web、报文发送、Test 6 个模块集合




Spring 模块与依赖关系


Core Container(核心容器)

  • Core:模块主要包含 Spring 框架最基本的核心工具类,Core 是其他组件的基础核心
  • Beans:模块主要包含访问配置文件、创建/管理 Bean 以及 IOC/DI 相关的类
  • Context:继承了 Beans 的特性,主要为 Spring 提供大量的扩展,如国际化、事件机制、资源加载等待。ApplicationContext 接口是 Context 模块的关键
  • Expression:模块提供了一个强大的语言表达式





AOP and Instrumentation


提供符合 AOP Alliance 标准的面向切面编程的实现,可以让你定义如方法拦截器和切点,从而降低程序之间的耦合性

  • AspectJ:提供了与 AspectJ 的集成
  • Instrumentation:提供用于某些应用程序服务器的类工具支持和类加载器实现




Messaging

该模块具有来自 Spring Integration 项目的关键抽象,如 Message,MessageChannel,MessageHandler 等。它们构成基于消息的应用程序的基础。该模块还包括一组注释,用于将消息映射到方法,类似于基于 Spring MVC 注释的编程模型




Web


  • Web:提供了基本的面向 Web 的集成功能,如文件上传功能以及使用 Servlet 监听器和面向 Web 的应用程序上下文对 IoC 容器的初始化
  • WebMVC:(也称为 Web­Servlet 模块)包含基于 Spring 的 Model­View­Controller(MVC)支持和针对 Web 应用程序的 Rest Web 服务实现
  • Web­Portlet:(也称为 Web­Portlet 模块)提供 Portlet 环境中的 MVC 实现




Data Access/Integration

  • JDBC:提供了 JDBC 抽象层,从而无需进行繁琐的 JDBC 编码和数据库特定错误代码(不同数据代码可能不同)的解析
  • 事务:支持对实现特殊接口的类以及所有 POJO(普通 Java 对象)进行编程和声明式事务管理
  • ORM:该模块为当前流行的 ORM(包括 JPA,JDO 和 Hibernate)提供了集成层。使用 ORM 模块,可以将所有这些 O/R 映射框架与 Spring 提供的所有功能结合使用,如前面提到的事务管理功能
  • OXM:提供了一个抽象层,该抽象层支持 Object/XML 映射实现,例如 JAXB,Castor,XMLBeans,JiBX 和 Xstream
  • JMS:包含用于生成和使用消息的功能。从 Spring Framework 4.1 开始,提供了与 Spring­Messaging 模块集成



Test

该模块支持使用 JUnit 或 TestNG 对 Spring 组件进行单元测试和集成测试



最后


本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

目录
打赏
0
1
0
0
10
分享
相关文章
Spring框架初识
Spring 是一个分层的轻量级开源框架,核心功能包括控制反转(IOC)和面向切面编程(AOP)。主要模块有核心容器、Spring 上下文、AOP、DAO、ORM、Web 模块和 MVC 框架。它通过 IOC 将配置与代码分离,简化开发;AOP 提供了声明性事务管理等增强功能。
90 21
Spring框架初识
Spring MVC 扩展和SSM框架整合
通过以上步骤,我们可以将Spring MVC扩展并整合到SSM框架中。这个过程包括配置Spring MVC和Spring的核心配置文件,创建控制器、服务层和MyBatis的Mapper接口及映射文件。在实际开发中,可以根据具体业务需求进行进一步的扩展和优化,以构建更加灵活和高效的企业级应用程序。
31 5
Spring AI Alibaba 应用框架挑战赛圆满落幕,恭喜获奖选手
第二届开放原子大赛 Spring AI Alibaba 应用框架挑战赛决赛于 2 月 23 日在北京圆满落幕。
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
154 29
通过springboot框架创建对象(一)
在Spring Boot中,对象创建依赖于Spring框架的核心特性——控制反转(IoC)和依赖注入(DI)。IoC将对象的创建和管理交由Spring应用上下文负责,开发者只需定义依赖关系。DI通过构造函数、setter方法或字段注入实现依赖对象的传递。Spring Boot的自动配置机制基于类路径和配置文件,自动为应用程序配置Spring容器,简化开发过程。Bean的生命周期包括定义扫描、实例化、依赖注入、初始化和销毁回调,均由Spring容器管理。这些特性提高了开发效率并简化了代码维护。
SaaS云计算技术的智慧工地源码,基于Java+Spring Cloud框架开发
智慧工地源码基于微服务+Java+Spring Cloud +UniApp +MySql架构,利用传感器、监控摄像头、AI、大数据等技术,实现施工现场的实时监测、数据分析与智能决策。平台涵盖人员、车辆、视频监控、施工质量、设备、环境和能耗管理七大维度,提供可视化管理、智能化报警、移动智能办公及分布计算存储等功能,全面提升工地的安全性、效率和质量。
SpringBoot是如何简化Spring开发的,以及SpringBoot的特性以及源码分析
Spring Boot 通过简化配置、自动配置和嵌入式服务器等特性,大大简化了 Spring 应用的开发过程。它通过提供一系列 `starter` 依赖和开箱即用的默认配置,使开发者能够更专注于业务逻辑而非繁琐的配置。Spring Boot 的自动配置机制和强大的 Actuator 功能进一步提升了开发效率和应用的可维护性。通过对其源码的分析,可以更深入地理解其内部工作机制,从而更好地利用其特性进行开发。
65 6
Spring Boot中的日志框架选择
在Spring Boot开发中,日志管理至关重要。常见的日志框架有Logback、Log4j2、Java Util Logging和Slf4j。选择合适的日志框架需考虑性能、灵活性、社区支持及集成配置。本文以Logback为例,演示了如何记录不同级别的日志消息,并强调合理配置日志框架对提升系统可靠性和开发效率的重要性。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
理解和解决Spring框架中的事务自调用问题
事务自调用问题是由于 Spring AOP 代理机制引起的,当方法在同一个类内部自调用时,事务注解将失效。通过使用代理对象调用、将事务逻辑分离到不同类中或使用 AspectJ 模式,可以有效解决这一问题。理解和解决这一问题,对于保证 Spring 应用中的事务管理正确性至关重要。掌握这些技巧,可以提高开发效率和代码的健壮性。
217 13

热门文章

最新文章