# springboot-lab2
**Repository Path**: liusibo61/springboot-lab2
## Basic Information
- **Project Name**: springboot-lab2
- **Description**: springboot实验二
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-04-15
- **Last Updated**: 2021-04-27
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
课程名称:企业级开发框架 学期:2021年春季
| 实验名称 | 利用Spring Boot自动装配特性动态注册组件 | 实验序号 | 二 |
| ------------ | ---------------------------------- | -------- | :--: |
| 姓 名 | 刘思博 | 专业班级 | 18软卓2班 |
| 学 号 | 201841412219 | 实验日期 | 2021/4/13 |
| 实验地点 | 实验室 | 评阅老师 | |
| 成绩(百分制) | | | |
| 同组同学 | 无 | | |
# 实验二 利用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项目;
无截图
2. 创建一个CommandLineRunner接口的实现类,实现run(String... args)方法(**没有添加@Component注解**);
3. 创建一个配置类(**没有添加@Configuration注解**)
4、创建META-INF目录及spring.factories文件并运行启动类
5、给自动配置类添加有效条件@ConditionalOnxxx

1)符合条件:注册到Spring容器
2)不符合条件:没有注册到Spring容器
6、自定义一个Bean,绑定属性值,并生成Spring配置类的元数据文件。
1)创建一个类,加上注解@ConfigurationProperties(prefix="")
2)在配置类上添加@EnableConfigurationProperties,并指定装配的属性Bean
3)使用SpringBoot提供的注解处理器生成自定义属性的元数据文件
a.添加pom依赖
b.maven执行compile命令编译当前springboot项目,观察target目录下的元数据文件
c.重新编辑application.properties配置文件,有了自动上下文提示
7、自定义一个事件发布器,并设置自定义线程池,实现异步发布事件。
1)自定义线程池
2)自定义事件发布器,并设置自定义的线程池,使之可以异步的发布事件
3)自定义事件类
4)自定义事件监听器
5)编写测试,检查发布事件时,是否使用了多线程异步处理
运行结果:成功执行异步发布事件
8、自定义ApplicationReadyEvent事件的事件监听器,测试监听器的回调是否在CommandLineRunner之后。
1)自定义事件监听器并注册到容器
2)测试:执行启动类
