# 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注解**); image-20210413174812427 3. 创建一个配置类(**没有添加@Configuration注解**) image-20210413174850236 4、创建META-INF目录及spring.factories文件并运行启动类 image-20210413175446194 image-20210414143151146 5、给自动配置类添加有效条件@ConditionalOnxxx ![image-20210414143606400](%E5%AE%9E%E9%AA%8C%E4%BA%8C.assets/image-20210414143606400.png) 1)符合条件:注册到Spring容器 image-20210414143645904 image-20210414143755658 2)不符合条件:没有注册到Spring容器 image-20210414144024199 image-20210414144039202 6、自定义一个Bean,绑定属性值,并生成Spring配置类的元数据文件。 1)创建一个类,加上注解@ConfigurationProperties(prefix="") image-20210414145725440 2)在配置类上添加@EnableConfigurationProperties,并指定装配的属性Bean image-20210414145323461 3)使用SpringBoot提供的注解处理器生成自定义属性的元数据文件 a.添加pom依赖image-20210414145607294 b.maven执行compile命令编译当前springboot项目,观察target目录下的元数据文件 image-20210414150258793 c.重新编辑application.properties配置文件,有了自动上下文提示 image-20210414150156175 7、自定义一个事件发布器,并设置自定义线程池,实现异步发布事件。 1)自定义线程池 image-20210415113659412 2)自定义事件发布器,并设置自定义的线程池,使之可以异步的发布事件 image-20210415113824643 3)自定义事件类 image-20210415114140026 4)自定义事件监听器 image-20210415114412814 5)编写测试,检查发布事件时,是否使用了多线程异步处理 image-20210415114642625 运行结果:成功执行异步发布事件 image-20210415114939068 8、自定义ApplicationReadyEvent事件的事件监听器,测试监听器的回调是否在CommandLineRunner之后。 1)自定义事件监听器并注册到容器 image-20210415134426774 image-20210415134241042 2)测试:执行启动类 ![image-20210415135020162](%E5%AE%9E%E9%AA%8C%E4%BA%8C.assets/image-20210415135020162.png)