# experiment02 **Repository Path**: dgsai/experiment02 ## Basic Information - **Project Name**: experiment02 - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-04-11 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 实验二 利用Spring boot的自动装配特性实现动态注册组件 姓名:谢梓轩 学号:201741412105 班级:17软卓一班 **一、 实验目的** 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/0411/111828_0692395d_4840622.png "图片1.png") 2、创建一个自定义的`CommandLineRunner`接口的实现类。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/111902_6f0561a7_4840622.png "图片2.png") 3、创建一个自定义的自动配置类 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/111937_a470b5aa_4840622.png "图片3.png") 4、创建`spring.factories`文件,`spring.factories`必须放在META-INF目录下。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/112114_4f0622fa_4840622.png "图片4.png") ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/112152_c8e914a4_4840622.png "图片5.png") 说明:按上图输入内容。key必须是`EnableAutoConfiguration`的全限定类名,值为刚才我们自定义的自动配置类的全限定类路径的类名 测试运行程序: ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/112239_0b99f14c_4840622.png "图片6.png") 运行结果: ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/112308_8af94c24_4840622.png "图片7.png") 5、给自动配置类添加有效条件 步骤如下: (1)利用`@ConditionalOnProperty`注解,添加属性条件。 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/112355_7eb36b0e_4840622.png "图片8.png") (2)在`application.properties`属性文件中添加一个自定义的属性 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/112435_19f85c5c_4840622.png "图片9.png") (3)切换属性值false/true,观察终端的显示,判断自动装配的配置类是否生效 当属性值切换为false时,运行结果为: ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/112630_96659c32_4840622.png "图片11.png") 当属性值切换为true时,运行结果为: ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/113129_e96acbf8_4840622.png "图片12.png") 6、自定义一个Bean,绑定属性值,并生成spring配置类的元数据文件 (1)创建一个类,并在类上加@ConfigurationProperties注解,设置注解的prefix属性指定绑定的属性的前缀 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/113847_d8079c8f_4840622.png "图片13.png") (2)在某个配置类上添加`@EnableConfigurationProperties`,并指定装配的属性Bean ![输入图片说明](https://images.gitee.com/uploads/images/2020/0411/114049_a92f6668_4840622.png "图片14.png") (3)使用spring boot框架提供的注解处理器生成自定义属性的元数据文件