# 企业级开发课程-实验二 **Repository Path**: alizipeng/project02 ## Basic Information - **Project Name**: 企业级开发课程-实验二 - **Description**: 利用Spring Boot的自动装配特性实现动态注册组件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-13 - **Last Updated**: 2021-04-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业级开发课程-实验二 ## 一、实验目的 1. 掌握Spring Boot的自动装配原理; 2. 掌握Spring框架动态注册Bean的原理; 3. 掌握自动生成元数据文件; 4. 掌握Spring框架的事件模型。 ## 二、实验环境 1. JDK 1.8或更高版本 2. Maven 3.6+ 3. inteliJ IDEA ## 三、实验任务 1. 创建项目(选择添加Spring Configuration Processor依赖) ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/084605_a6171657_4842981.png "屏幕截图.png") 2. 创建一个自定义的CommandLineRunner接口的实现类(不要在自定义类上加@Component注解) ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/091834_3c37d5e8_4842981.png "屏幕截图.png") 3. 创建一个自定义的自动配置类 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/092109_79d998c4_4842981.png "屏幕截图.png") 4. 创建spring.factories文件 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/092430_d212549f_4842981.png "屏幕截图.png") 【测试】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/092734_567cb90e_4842981.png "屏幕截图.png") 5. 给自动配置类添加有效条件 【利用@ConditionalOnProperty注解,添加属性条件】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/093300_d2a58e79_4842981.png "屏幕截图.png") 【在application.properties属性文件中添加一个自定义的属性】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/093311_3508d7cc_4842981.png "屏幕截图.png") 【切换true/false值,观察自动装配的配置类是否生效】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/093614_0ce686f5_4842981.png "屏幕截图.png") 6. 自定义一个Bean,绑定属性值并生成spring配置类的元数据文件 【创建一个类,并在类删加@ConfigurationProperties注解,设置注解的prefix属性,指定绑定的属性的前缀】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/094620_63cbfa89_4842981.png "屏幕截图.png") 【在配置类上添加@EnableConfigurationProperties,并指定装配的属性Bean】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/094636_80d6d8f9_4842981.png "屏幕截图.png") 【使用Spring Boot框架提供的注解处理器生成自定义属性的元数据文件】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/095942_22c6a496_4842981.png "屏幕截图.png") 7. 根据阅读框架源码,可以自定义一个事件发布器,并设置线程池,实现异步发布事件 【自定义事件发布器】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/104515_9e63a2de_4842981.png "屏幕截图.png") 【自定义事件类】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/102343_1913f1e2_4842981.png "屏幕截图.png") 【自定义事件监听器】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/103659_70af831b_4842981.png "屏幕截图.png") 【测试,查看发布事件时是否使用了多线程异步处理】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/104251_498cdd42_4842981.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0413/104603_425fd675_4842981.png "屏幕截图.png") 8. 自定义ApplicationReadyEvent的事件监听器 【自定义一个ApplicationReadyEvent的事件监听器,并在终端输出指定信息,确定是在CommandLineRunner的输出信息之后】 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0420/085947_d165b42d_4842981.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0420/090010_7df15597_4842981.png "屏幕截图.png")