# springboot-experiment02 **Repository Path**: mysingleroom/springboot-experiment02 ## Basic Information - **Project Name**: springboot-experiment02 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-12 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

实验二

课程名称:企业级开发框架专题

学期:2020春季


实验名称利用Spring boot的自动装配特性实现动态注册组件实验序号
姓 名黄鑫杰学 号201741404127班 级17软卓1班
实验地点网上实验日期2020/4/12指导老师黎志雄
教师评语***实验成绩 评阅教师
百分制**
同组同学
## 实验目标 1、 掌握Spring Boot的自动配置原理; 2、 掌握Spring框架动态注册Bean的原理; 3、 掌握自动生成元数据文件。 4、 掌握spring框架的事件模型。 ## 实验内容(实验步骤) 1、 通过IntelliJ IDEA的Spring Initializr向导创建Spring Boot项目。 注意:创建项目时,请选择添加Spring Configuration Processor依赖。 2、 创建一个自定义的CommandLineRunner接口的实现类。 注意:不要在自定义类上加@Component注解。 3、 创建一个自定义的自动配置类。 4、 创建spring.factories文件 5、 给自动配置类添加有效条件。 步骤如下: 1) 利用@ConditionalOnProperty注解,添加属性条件。 2) 在application.properties属性文件中添加一个自定义的属性。 3) 切换属性值false/true,观察终端的显示,判断自动装配的配置类是否生效。 6、 自定义的一个Bean,绑定属性值,并生成spring配置类的元数据文件。 步骤如下: 1) 创建一个类,并在类上加@ConfigurationProperties注解,设置注解的prefix属性指定绑定的属性的前缀。 2) 在某个配置类上添加@EnableConfigurationProperties,并指定装配的属性Bean。 3) 使用spring boot框架提供的注解处理器生成自定义属性的元数据文件。 7、 根据阅读框架源码,我们可以自定义一个事件发布器,并设置线程池,实现异步发布事件。 8、 自定义事件类。 9、 自定义事件监听器。 10、 编写一个测试用例,检查发布事件时,是否使用了多线程异步处理。 深入思考: 在上面的例子中,我们使用了Spring Boot框架提供的默认线程池。默认线程池在自动配置类TaskExecutionAutoConfiguration中定义。 我们可以自定义一个自己的线程池,这样可以配置更多的属性。尝试一下自定义一个线程池,然后给自定义的事件发布器使用。 ## 实验要求 1、 实验项目push到码云的公开仓库,并把仓库网址登记在在线文档; 2、 从码云仓库下载项目的ZIP文件,并交由班长汇总; 3、 撰写实验报告,完成各个实验任务。各实验任务中的附图,是老师的演示代码,同学们应该模仿演示代码改为自己的代码。实验报告中必须完整描述各实验任务实现过程并附截图。 4、 网络空间安全学院实验报告模板(2019试行) 5、 实验二项目仓库登记表 6、 严禁抄袭。如果不想项目仓库给别人看到,可以设置为私有仓库,并把老师的码云账号(dgsai@vip.qq.com)加入到仓库开发者以便老师检查。 ## 实验结果(及分析): 1.通过IntelliJ IDEA的Spring Initializr向导创建Spring Boot项目。 ![](photos/1.jpg) 2、 创建一个自定义的CommandLineRunner接口的实现类。 ![](photos/2.jpg) 3、 创建一个自定义的自动配置类。 ![](photos/3.jpg) 4、 创建spring.factories文件 ![](photos/4.jpg) 执行 ``mvn spring-boot:run`` 后 ![](photos/5.jpg) 5、 给自动配置类添加有效条件。 在``application.properties`` 中添加 ``hxj.auto.enable = true`` 然后如下图 ![](photos/6.jpg) 若此处修改为``false``,则自动装配进入 6、 自定义的一个Bean,绑定属性值,并生成spring配置类的元数据文件。 ![](photos/8.jpg) 然后在``MyAutoConfig.class``上 ![](photos/8.1.jpg) 然后导入依赖 ![](photos/7.png) 可得 ![](photos/8-3.jpg) 7、 根据阅读框架源码,我们可以自定义一个事件发布器,并设置线程池,实现异步发布事件。 ![](photos/7-1.jpg) 运行之后 ![](photos/7-2.jpg) 8、 自定义事件类。 ![](photos/8-2.jpg) 9、 自定义事件监听器。 ![](photos/9.jpg) 10、 编写一个测试用例 ![](photos/10-1.jpg) 执行后 ![](photos/10-2.jpg) 深入思考: 进入TaskExecutionAutoConfiguration查看源码可得 ![](photos/11-1.jpg) 进而可自定义线程池 ![](photos/11-2.jpg) 执行可得 ![](photos/11-3.jpg)