# 实验二-利用Spring boot的自动装配特性实现动态注册组件 **Repository Path**: cs_xiao/springboot-exp02 ## Basic Information - **Project Name**: 实验二-利用Spring boot的自动装配特性实现动态注册组件 - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-10-24 - **Last Updated**: 2021-10-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## **课程名称** :企业级开发框架实践 **实验名称**:利用Spring boot的自动装配特性实现动态注册组件 **实验序号**:二 **姓名**:陈旭孝 **学号**:201841413103 **班级**:18网工1班 **实验地址**:学校 **实验日期**:2020-10-19 **指导老师**:黎志雄 **实验成绩**:XXX **百分制**:XXX **同组同学**:无 **教师评语**:XXX XXX ### 实验一 使用Spring Boot构建应用程序 #### 一、实验目的 1. 掌握Spring Boot的自动配置原理; 2. 掌握Spring框架动态注册Bean的原理; 3. 掌握自动生成元数据文件。 4. 掌握spring框架的事件模型。 #### 二、实验环境 1. JDK 1.8或更高版本 2. Maven 3.6+ 3. IntelliJ IDEA #### 三、实验任务 1. 通过IntelliJ IDEA的Spring Initializr向导创建Spring Boot项目。 1. ![image-20201019165349097](Screenshot/a.png) 2. 创建一个自定义的CommandLineRunner接口的实现类。 1. ![image-20201019165700347](Screenshot/b.png) 2. ![image-20201019165943815](Screenshot/image-20201019165943815.png) 3. 创建一个自定义的自动配置类。 1. ![image-20201019170049576](Screenshot/image-20201019170049576.png) 2. ![image-20201019170107435](Screenshot/image-20201019170107435.png) 4. 创建spring.factories文件 1. ![image-20201019170136488](Screenshot/image-20201019170136488.png) 2. ![image-20201019170226105](Screenshot/image-20201019170226105.png) 5. 给自动配置类添加有效条件。 1. ![image-20201019170830825](Screenshot/image-20201019170830825.png) 2. ![image-20201019170918601](Screenshot/image-20201019170918601.png) 3. ![image-20201019170805092](Screenshot/image-20201019170805092.png) 4. ![image-20201019171030166](Screenshot/image-20201019171030166.png) 5. ![image-20201019171053192](Screenshot/image-20201019171053192.png) 6. 自定义的一个Bean,绑定属性值,并生成spring配置类的元数据文件。 1. ![image-20201019175741355](Screenshot/image-20201019175741355.png) 2. ![image-20201019175816156](Screenshot/image-20201019175816156.png) 3. ![image-20201019175902852](Screenshot/image-20201019175902852.png) 4. ![image-20201019180010835](Screenshot/image-20201019180010835.png) 7. 根据阅读框架源码,我们可以自定义一个事件发布器,并设置线程池,实现异步发布事件。 1. ![image-20201023232055675](Screenshot/image-20201023232055675.png) 2. ![image-20201023232120047](Screenshot/image-20201023232120047.png) 3. ![image-20201023232131841](Screenshot/image-20201023232131841.png) 4. ![image-20201023232217090](Screenshot/image-20201023232217090.png) 5. ![image-20201023232231556](Screenshot/image-20201023232231556.png) 8. 自定义 ApplicationReadyEvent 的事件监听器。( 2020年10月新增 ) 1. ![image-20201024000958904](Screenshot/image-20201024000958904.png) 2. ![image-20201024001040064](Screenshot/image-20201024001040064.png)