# spring5 **Repository Path**: dx_wei/spring5 ## Basic Information - **Project Name**: spring5 - **Description**: https://www.bilibili.com/video/BV1P44y1N7QG 黑马程序员Spring视频教程,深度讲解spring5底层原理 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-03 - **Last Updated**: 2025-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring5 示例项目说明 这是一个基于 Spring5 框架的示例项目,旨在演示 Spring 容器的核心功能,包括依赖注入、事件发布、生命周期管理、作用域控制等。项目分为多个模块(如 A01 到 A09),每个模块演示了 Spring 的不同特性。 --- ## 项目结构概览 - **A01**:演示 Spring 事件发布与监听机制。 - **A02**:展示不同类型的 Spring 容器(如 `ClassPathXmlApplicationContext`、`AnnotationConfigApplicationContext` 等)。 - **A03**:演示 Bean 的生命周期管理及自定义 `BeanPostProcessor`。 - **A04**:展示 `@Autowired`、`@Resource`、`@Value`、`@PostConstruct`、`@PreDestroy` 等注解的使用。 - **A05**:演示组件扫描、`@Bean` 定义、`@ConfigurationProperties` 以及自定义 `BeanFactoryPostProcessor`。 - **A06**:展示 Spring 容器中 Bean 的感知接口(如 `ApplicationContextAware`、`BeanNameAware` 等)。 - **A07**:演示 Bean 的初始化和销毁方法的多种定义方式。 - **A08**:展示不同作用域(`request`、`session`、`application`)的 Bean 及其销毁行为。 - **A09**:演示原型(prototype)作用域 Bean 的懒加载及代理机制。 --- ## 如何运行 ### 前提条件 - JDK 1.8 或更高版本 - Maven 3.x - IDE(如 IntelliJ IDEA 或 Eclipse) ### 构建项目 ```bash mvn clean install ``` ### 运行模块 每个模块都有一个主类(如 `A01Application`、`A02Application` 等),可以直接运行这些类启动 Spring 容器并观察输出日志。 例如: ```bash java -cp target/classes com.itheima.a01.A01Application ``` --- ## 示例功能说明 ### A01:事件发布与监听 - `Component1` 发布一个 `UserRegisteredEvent` 事件。 - `Component2` 监听该事件并执行逻辑。 ### A04:依赖注入演示 - `Bean1` 通过 `@Autowired` 和 `@Resource` 注入 `Bean2` 和 `Bean3`。 - 使用 `@Value` 注入系统属性(如 `JAVA_HOME`)。 - 使用 `@PostConstruct` 和 `@PreDestroy` 定义初始化和销毁方法。 ### A05:组件扫描与配置类 - `Config` 类使用 `@ComponentScan` 扫描组件。 - 使用 `@Bean` 定义多个 Bean。 - `Bean4` 使用 `@ConfigurationProperties` 绑定配置属性。 ### A08:作用域 Bean - `BeanForRequest`、`BeanForSession`、`BeanForApplication` 分别定义了不同作用域的 Bean。 - 在 `MyController` 中通过 `@Lazy` 和 `@Autowired` 注入这些 Bean,并通过 HTTP 请求测试其作用域行为。 --- ## 贡献指南 欢迎提交 Pull Request 来改进或扩展示例内容。请确保: - 保持代码简洁明了,适合教学和演示。 - 添加必要的注释和日志输出。 - 更新 README.md 以反映新增功能。 --- ## 许可证 本项目采用 MIT 许可证。详情请查看 [LICENSE](LICENSE) 文件。