# spring2 **Repository Path**: homeOFlimu/spring2 ## Basic Information - **Project Name**: spring2 - **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-04-13 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 企业级开发框架实验2 ### 一、实验目的 - 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项目。 ![](https://images.gitee.com/uploads/images/2020/0413/152313_75d8cd1d_4839312.png "截屏2020-04-13下午3.23.03.png") ##### 2、 创建一个自定义的CommandLineRunner接口的实现类。 ![](https://images.gitee.com/uploads/images/2020/0413/152337_09af145a_4839312.png "截屏2020-04-13下午2.26.42.png") ##### 3、创建一个自定义的自动配置类 ![](https://images.gitee.com/uploads/images/2020/0413/152351_df16bff5_4839312.png "截屏2020-04-13下午2.29.16.png") ##### 4、创建spring.factories文件 1)创建文件 ![](https://images.gitee.com/uploads/images/2020/0413/152407_48d6a947_4839312.png "截屏2020-04-13下午2.34.33.png") 2)运行结果 ![](https://images.gitee.com/uploads/images/2020/0413/152428_8c214550_4839312.png "截屏2020-04-13下午2.36.06.png") ##### 5、 给自动配置类添加有效条件。 1) 利用@ConditionalOnProperty注解,添加属性条件。 ![](https://images.gitee.com/uploads/images/2020/0413/152452_7288a32f_4839312.png "截屏2020-04-13下午2.38.26.png") 2) 在application.properties属性文件中添加一个自定义的属性。 ![](https://images.gitee.com/uploads/images/2020/0413/152522_d53fe4ff_4839312.png "截屏2020-04-13下午2.39.43.png") ##### 6、 自定义的一个Bean,绑定属性值,并生成spring配置类的元数据文件。 1) 创建一个类,并在类上加@ConfigurationProperties注解 ![](https://images.gitee.com/uploads/images/2020/0413/152605_e90bf57a_4839312.png "截屏2020-04-13下午2.44.06.png") 2) 打包编译结果: ![](https://images.gitee.com/uploads/images/2020/0413/152623_e7523f7f_4839312.png "截屏2020-04-13下午2.44.48.png") ##### 7、 根据阅读框架源码,我们可以自定义一个事件发布器,并设置线程池,实现异步发布事件。 ![](https://images.gitee.com/uploads/images/2020/0413/153055_ee918399_4839312.png "截屏2020-04-13下午3.30.38.png") ##### 8、 自定义事件类。 ![](https://images.gitee.com/uploads/images/2020/0413/153131_38d6173d_4839312.png "截屏2020-04-13下午3.31.20.png") ##### 9、 自定义事件监听器。 ![](https://images.gitee.com/uploads/images/2020/0413/153154_ddb30fe0_4839312.png "截屏2020-04-13下午3.31.44.png") ##### 10、 编写一个测试用例,检查发布事件时,是否使用了多线程异步处理。 ![](https://images.gitee.com/uploads/images/2020/0413/153226_92f01563_4839312.png "截屏2020-04-13下午3.08.21.png") ##### 11、 自定义线程池 ![](https://images.gitee.com/uploads/images/2020/0413/153347_c5684305_4839312.png "截屏2020-04-13下午3.13.42.png")