Spring基础知识

Spring基础知识

  • Spring 是一个开源的 Java 平台框架,广泛用于构建企业级应用程序。它提供了全面的基础设施支持,简化了 Java 开发,特别是在企业级应用中。
  • IoC(Inversion of Control,控制反转)DI(Dependency Injection,依赖注入) 是 Spring 框架的核心概念,它们共同构成了 Spring 的基础架构。

IOC

  • IoC 是一种设计原则,它将对象的创建、依赖关系的管理以及生命周期的控制从应用程序代码中转移到框架或容器中。传统编程中,对象自己控制依赖的创建和查找,而在 IoC 中,这些职责被反转,由容器来管理。
  • IoC 的核心思想
  • 控制反转:将对象的控制权从应用程序代码转移到容器。
  • 解耦:通过 IoC,对象之间的依赖关系由容器管理,降低了代码的耦合度。
  • 灵活性:通过配置(XML、注解或 Java 配置)管理对象,使得应用程序更易于扩展和维护。
  • IoC 容器负责:
    • 创建对象
    • 配置对象
    • 管理对象的生命周期
    • 注入依赖

DI

  • DI 是 IoC 的一种实现方式,它通过容器将对象的依赖关系注入到对象中,而不是由对象自己创建或查找依赖。DI 使得代码更加松耦合,易于测试和维护。
  • DI 的核心思想
    • 依赖注入:对象的依赖由外部容器注入,而不是由对象自己创建。
    • 解耦:对象不需要知道依赖的具体实现,只需要知道依赖的接口。
    • 可测试性:通过注入模拟对象,可以轻松进行单元测试。

Spring Bean 的生命周期

  • Spring IoC 容器管理 Bean 的整个生命周期,包括以下阶段:
    • 实例化:容器通过构造函数或工厂方法创建 Bean 实例。
    • 属性赋值:容器注入 Bean 的依赖。
    • 初始化:调用 Bean 的初始化方法(如 @PostConstructinit-method)。
    • 使用:Bean 处于就绪状态,可以被应用程序使用。
    • 销毁:容器关闭时,调用 Bean 的销毁方法(如 @PreDestroydestroy-method)。

版本信息

Spring 版本与 JDK 版本的关联

Spring 框架的版本对 JDK 版本有直接依赖关系。不同版本的 Spring 需要特定版本的 JDK 支持:

  • Spring 5.x:需要 JDK 8 或更高版本(支持 JDK 8、11、17 等)。
  • Spring 6.x:需要 JDK 17 或更高版本(不再支持 JDK 8 和 11)。
  • Spring 4.x:支持 JDK 6、7 和 8,但不支持更高版本的 JDK。

Spring版本和IDEA版本的关联

  • IntelliJ IDEA 2023.x:支持 Spring 6.x 和 Spring Boot 3.x,以及更早的 Spring 版本(如 Spring 5.x 和 Spring Boot 2.x)。
  • IntelliJ IDEA 2022.x:支持 Spring 5.x 和 Spring Boot 2.x,但对 Spring 6.x 和 Spring Boot 3.x 的支持可能不完善。
  • IntelliJ IDEA 2021.x 及更早版本:主要支持 Spring 5.x 和 Spring Boot 2.x,不支持 Spring 6.x 和 Spring Boot 3.x。

Spring依赖的相关模块

基础 Spring 项目(仅使用 IoC 和依赖注入)主要核心依赖:

  • spring-core:Spring 核心模块,提供 IoC 容器和依赖注入功能。
  • spring-context:扩展了 spring-core,提供了应用上下文、事件传播、资源加载等功能。
  • spring-beans:提供了 Bean 工厂和 Bean 的定义、配置和管理功能。

其他一些依赖:

  • spring-aop:支持面向切面编程(AOP)。
  • spring-web:提供了基础的 Web 功能,如 Multipart 文件上传。
  • spring-webmvc:Spring MVC 框架,用于构建 Web 应用。
  • spring-jdbc:提供了 JDBC 的抽象层,简化数据库操作。
  • spring-orm:支持与 ORM 框架(如 Hibernate、JPA)集成。
  • spring-test:支持 Spring 应用的单元测试和集成测试。

Spring的依赖传递

  • spring-context 依赖 spring-corespring-beans
  • spring-webmvc 依赖 spring-webspring-context
  • 因此,如果导入了 spring-context,则不需要显式导入 spring-corespring-beans,因为它们会被自动传递进来
posted @ 2025-03-18 14:33  QAQ001  阅读(26)  评论(0)    收藏  举报