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 组件进行单元测试和集成测试



最后


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

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

相关文章
|
2月前
|
Java Spring
聊聊你对SpringBoot框架的理解 ?
SpringBoot是Spring家族中流行的子项目,旨在简化Spring框架开发的繁琐配置。它主要提供三大功能:starter起步依赖简化依赖管理,自动配置根据条件创建Bean,以及内嵌Web服务器支持Jar包运行,极大提升了开发效率。
115 0
|
2月前
|
NoSQL Java 数据库连接
SpringBoot框架
Spring Boot 是 Spring 家族中最流行的框架,旨在简化 Spring 应用的初始搭建与开发。它通过自动配置、起步依赖和内嵌服务器三大核心功能,大幅减少配置复杂度,提升开发效率。开发者可快速构建独立运行的 Web 应用,并支持多种数据访问技术和第三方集成。
|
3月前
|
Java API 网络架构
基于 Spring Boot 框架开发 REST API 接口实践指南
本文详解基于Spring Boot 3.x构建REST API的完整开发流程,涵盖环境搭建、领域建模、响应式编程、安全控制、容器化部署及性能优化等关键环节,助力开发者打造高效稳定的后端服务。
429 1
|
2月前
|
缓存 安全 Java
Spring 框架核心原理与实践解析
本文详解 Spring 框架核心知识,包括 IOC(容器管理对象)与 DI(容器注入依赖),以及通过注解(如 @Service、@Autowired)声明 Bean 和注入依赖的方式。阐述了 Bean 的线程安全(默认单例可能有安全问题,需业务避免共享状态或设为 prototype)、作用域(@Scope 注解,常用 singleton、prototype 等)及完整生命周期(实例化、依赖注入、初始化、销毁等步骤)。 解析了循环依赖的解决机制(三级缓存)、AOP 的概念(公共逻辑抽为切面)、底层动态代理(JDK 与 Cglib 的区别)及项目应用(如日志记录)。介绍了事务的实现(基于 AOP
|
2月前
|
存储 缓存 NoSQL
Spring Cache缓存框架
Spring Cache是Spring体系下的标准化缓存框架,支持多种缓存(如Redis、EhCache、Caffeine),可独立或组合使用。其优势包括平滑迁移、注解与编程两种使用方式,以及高度解耦和灵活管理。通过动态代理实现缓存操作,适用于不同业务场景。
259 0
|
2月前
|
消息中间件 NoSQL Java
SpringBoot框架常见的starter你都用过哪些 ?
本节介绍常见的Spring Boot Starter,分为官方(如Web、AOP、Redis等)与第三方(如MyBatis、MyBatis Plus)两类,用于快速集成Web开发、数据库、消息队列等功能。
197 0
|
2月前
|
缓存 安全 Java
第五章 Spring框架
第五章 Spring框架
|
2月前
|
缓存 Java 数据库
第五章 Spring框架
第五章 Spring框架
|
2月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
226 0
|
3月前
|
安全 Java 数据库
Spring Boot 框架深入学习示例教程详解
本教程深入讲解Spring Boot框架,先介绍其基础概念与优势,如自动配置、独立运行等。通过搭建项目、配置数据库等步骤展示技术方案,并结合RESTful API开发实例帮助学习。内容涵盖环境搭建、核心组件应用(Spring MVC、Spring Data JPA、Spring Security)及示例项目——在线书店系统,助你掌握Spring Boot开发全流程。代码资源可从[链接](https://pan.quark.cn/s/14fcf913bae6)获取。
447 2