Spring Framework常用包

Spring Framework常用包

Spring狂神笔记

Spring(B站狂神说java)(自己总结方便复习)_51CTO博客_狂神说java spring

Spring狂神完整笔记_spring狂神笔记-CSDN博客

狂神说spring框架笔记 - 你的雷哥 - 博客园

常用依赖

核心容器IOC:org.springframework:spring-context

Web MVC:org.springframework:spring-webmvc

AOP 注解支持:org.springframework:spring-aspects

JDBC 支持:org.springframework:spring-jdbc

事务管理:org.springframework:spring-tx

测试支持:org.springframework:spring-test

依赖 你列的功能 实际场景 缺了它行吗
spring-context 核心容器 IoC @Component@Autowired@Configuration@Value ❌ 不行,这是地基
spring-webmvc Web MVC @Controller@RestController@RequestMapping ⚠️ 不做 Web 就不用
spring-aspects AOP 注解支持 @Aspect@Before@Around@Pointcut ⚠️ 不做切面就不用
spring-jdbc JDBC 支持 JdbcTemplateDataSource 配置 ⚠️ 不用数据库就不用
spring-tx 事务管理 @Transactional、声明式事务 ⚠️ 有数据库操作建议必加
spring-test 测试支持 @SpringBootTest@ContextConfigurationMockMvc ⚠️ 写测试时才需要
用户请求
    ↓
spring-webmvc(接收请求,@Controller 处理)
    ↓
spring-context(管理 Service、DAO 等 Bean,@Autowired 注入)
    ↓
spring-aspects(可选:在 Service 层加日志、权限切面)
    ↓
spring-tx(@Transactional 管理数据库事务,保证一致性)
    ↓
spring-jdbc(JdbcTemplate 执行 SQL,操作数据库)
    ↓
返回响应

一个非 Spring Boot 项目的完整依赖示例

<dependencies>
    <!-- 核心容器 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.31</version>
    </dependency>

    <!-- Web MVC -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.31</version>
    </dependency>

    <!-- AOP 注解支持 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>5.3.31</version>
    </dependency>

    <!-- JDBC 支持 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.3.31</version>
    </dependency>

    <!-- 事务管理 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.3.31</version>
    </dependency>

    <!-- 测试支持 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>5.3.31</version>
        <scope>test</scope>
    </dependency>

    <!-- ===== 下面这 3 个是补充 ===== -->
    <!-- Servlet API -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>

    <!-- 连接池(HikariCP 是 Spring Boot 默认) -->
    <dependency>
        <groupId>com.zaxxer</groupId>
        <artifactId>HikariCP</artifactId>
        <version>4.0.3</version>
    </dependency>

    <!-- JSON 解析 -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.13.5</version>
    </dependency>
</dependencies>

image-20260624131057348

Spring Framework 官方文档把模块分成以下几层

1363376-20210403095604664-2007511203

Spring Framework 模块架构
├── Core Container(核心容器)
│   ├── spring-core
│   ├── spring-beans
│   ├── spring-context  ← 你列了
│   └── spring-expression(SpEL)
├── AOP and Instrumentation(AOP)
│   ├── spring-aop
│   └── spring-aspects  ← 你列了
├── Data Access / Integration(数据访问)
│   ├── spring-jdbc  ← 你列了
│   ├── spring-tx  ← 你列了
│   ├── spring-orm
│   └── spring-jms
├── Web(Web 层)
│   ├── spring-web
│   └── spring-webmvc  ← 你列了
└── Test(测试)
    └── spring-test  ← 你列了
Spring Framework 模块架构
├── Core Container
│   ├── spring-core        ✅ 顺带(通过 context)
│   ├── spring-beans       ✅ 顺带(通过 context)
│   ├── spring-context     ✅ 你主动写了
│   └── spring-expression  ✅ 顺带(通过 context)
├── AOP and Instrumentation
│   ├── spring-aop         ✅ 顺带(通过 context)
│   └── spring-aspects     ✅ 你主动写了
├── Data Access / Integration
│   ├── spring-jdbc        ✅ 你主动写了
│   ├── spring-tx          ✅ 你主动写了
│   ├── spring-orm         ❌ 没导入
│   └── spring-jms         ❌ 没导入
├── Web
│   ├── spring-web         ✅ 顺带(通过 webmvc)
│   └── spring-webmvc      ✅ 你主动写了
└── Test
    └── spring-test        ✅ 你主动写了

重新审视你列的 6 个依赖

你主动写的依赖 它传递了什么 结论
spring-context spring-corespring-beansspring-expressionspring-aop 可以省略(被 webmvc 传递)
spring-webmvc spring-web(里面有spring-corespring-beans)、spring-context(上面全部) 必须写(Web 项目入口)
spring-aspects aspectjweaver(AspectJ 运行时) 必须写(要注解式 AOP 就得加)
spring-jdbc spring-corespring-beansspring-tx 必须写(要 JdbcTemplate 就得加)
spring-tx spring-corespring-beans 可以省略(被 spring-jdbc 传递)
spring-test spring-core 必须写(测试专用,scope=test)

总结:各模块分工一览表

模块 一句话定位 你什么时候需要它
spring-core 工具类 + 字节码操作 只要用 Spring 就必须有
spring-beans Bean 的定义和工厂 只要用 Spring 就必须有
spring-expression SpEL 动态表达式 需要 ${}#{} 表达式时
spring-context 开箱即用的 IoC 容器 需要 @Component/@Autowired
spring-aop AOP 代理生成引擎 需要切面增强时
spring-aspects @Aspect 注解支持 需要用注解写切面时
spring-web HTTP 协议抽象 + 客户端(对java web的封装,封装成Spring的格式) 需要发 HTTP 或接收 HTTP 时
spring-webmvc MVC 框架(规范化使用,并且提供方便的注解,使得使用更加方便) 需要写 @Controller/@RestController
spring-jdbc JDBC 模板 需要直接操作数据库(不用 ORM)时
spring-tx 声明式事务 需要 @Transactional
spring-test 测试上下文 + MockMvc 需要写 Spring 单元测试时
spring-orm         ⭐ ORM 框架整合(Hibernate/JPA)
spring-jms         ⭐ JMS 消息整合

mybatis也是ORM 框架啊,为什么不用spring-orm:

  • MyBatis 确实是一个 ORM 框架,但它不走 Java 的 JPA 标准规范,所以不能直接用 spring-orm 来整合。 MyBatis用 mybatis-spring 整合(mybatis-springMyBatis 官方团队 提供的)
posted @ 2026-06-24 13:03  deyang  阅读(20)  评论(0)    收藏  举报