# JavaEE3-Experiment2
**Repository Path**: shallowcmz/JavaEE3-Experiment2
## Basic Information
- **Project Name**: JavaEE3-Experiment2
- **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-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
实验二
课程名称:企业级开发框架专题
学期:2020春季
|
实验名称 | 利用Spring boot的自动装配特性实现动态注册组件 | 实验序号 | 二 |
|
姓 名 | 陈铭昭 | 学 号 | 201741404152 | 班 级 | 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项目

2、 创建一个自定义的CommandLineRunner接口的实现类

3、 创建一个自定义的自动配置类

4、 创建spring.factories文件

5、 给自动配置类添加有效条件

当条件为true时,结果如下:

当条件为false时,结果如下:

6、 自定义的一个Bean,绑定属性值,并生成spring配置类的元数据文件
命令行输入mvn package, 可以看到target中多了元数据的文件

然后到application.properties中,可以看到已经有提示

7、 根据阅读框架源码,我们可以自定义一个事件发布器,并设置线程池,实现异步发布事件

运行后:

8、 自定义事件类

9、 自定义事件监听器

10、 编写一个测试用例,检查发布事件时,是否使用了多线程异步处理

运行后:
