手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

SpringBoot12-获取配置文件中的属性名称

时间:2024-10-12 16:38:11

今天小编继续学习spring-boot,今天小编带大家来看一下在spring boot项目中配置文件中的属性名称可以从哪里获得。

工具/原料

电脑一台

IDEA

从官方文档获取

1、下图是小编的项目目录结构,这个spring boot项目是向导自动生成的,如下图:

SpringBoot12-获取配置文件中的属性名称

2、然后在项目的rsources文件夹下会自动有一个application.properties配置文件,在这个配置文件中可以配置许多东西,如何获取配置文件中的属性名称呢,如下图:

SpringBoot12-获取配置文件中的属性名称

3、首先打开对应版本的官方文档,然后点击【Common application properties】如下图:

SpringBoot12-获取配置文件中的属性名称

4、然后在这个页面中就包含了application.properties配置文件中所有可能属性的名称,如下图:

SpringBoot12-获取配置文件中的属性名称

从配置类中获取

1、首先打开spring boot项目的主方法,点击类的唯一的一个注解【@SpringBootApplication】,这个注解使当程序启动时加载spring boot主配置类,如下图:

SpringBoot12-获取配置文件中的属性名称

2、在【SpringBootApplicaton】配置类中使用了【@EnableAutoConfiguration】注解,这个注解是开启了自动配置功能,如下图:

SpringBoot12-获取配置文件中的属性名称

3、这个【EnableAutoConfiguration】配置类中有一个【@Import】注解,这个是通过【AutoConfigurationImportSelector】这个选择器导入一些组件到spring的容器中,如下图:

SpringBoot12-获取配置文件中的属性名称

4、在这个【AutoConfigurationImportSelector】中有一个【selectImports】方法,在这个【selectImports】方法中又引用了【getAutoConfiturationEntry】方法,如下图:

SpringBoot12-获取配置文件中的属性名称

5、然后在这个【getAutoConfiturationEntry】方法中又引用了【getCandidateConfiturations】方法,这个方法是获取候选的配置,如下图:

SpringBoot12-获取配置文件中的属性名称

6、在这个【getCandidateConfiturations】方法中又使用了【SpringFactoriesLoader.loadFactoryNames】方法,如下图:

SpringBoot12-获取配置文件中的属性名称

7、在这个【SpringFactoriesLoader.loadFactoryNames】方法中返回了【loadSpringFactories】方法的返回值,如下图:

SpringBoot12-获取配置文件中的属性名称

8、进入到这个【loadSpringFactories】方法中,这个方法中是要扫描所有jar包类路径下的【spring.factories】文件,如下图:

SpringBoot12-获取配置文件中的属性名称

9、这是我们看到在引入的包【spring-boot-autoconfigure】包下有【spring-factories】文件,所以之前几步的作用就是将类路径下META-INF/spring.factories里面配置的所有的EnableAutoConfiguration的值加入到了容器中,如下图:

SpringBoot12-获取配置文件中的属性名称

10、下图中就是包【spring-boot-autoconfigure】包下的【spring-factories】文件的内容,里面包含了很多的配置类名称,每一个xxxAutoConfiguration类都是容器中的一个组件,都加入到容器中,用这些类来做自动配置,如下图:

SpringBoot12-获取配置文件中的属性名称

11、这里选择【HttpEncodingAutoConfiguration】来说明,如下图:

SpringBoot12-获取配置文件中的属性名称

12、按ctrl键同时点击【spring-factories】文件中的【HttpEncodingAutoConfiguration】类进入到【HttpEncodingAutoConfiguration】类中,1.@Configuration 表示这是一个配置类2.@EnableConfigurationProperties({HttpProperties.class}) 表示启动【HttpProperties.class】类的ConfigurationProperties功能,3.@ConditionalOnWebApplication(type = Type.SERVLET) 表示判断当前应用是否是web应用,是的话当前配置类生效4.@ConditionalOnClass({CharacterEncodingFilter.class})表示判断当前项目有没有这个【CharacterEncodingFilter】类5.@ConditionalOnProperty(prefix = "spring.http.encoding",value = {"enabled"},matchIfMissing = true) 表示判断当前配置文件中是否存在一个spring.http.encoding.enabled=true,的配置,如果存在,配置类生效,如果不存在同样生效,如下图:

SpringBoot12-获取配置文件中的属性名称

13、按Ctrl键同时点击【@EnableConfigurationProperties】注解后的类,进入到【HttpProperties】类中,@ConfigurationProperties( prefix = "spring.http")表示从配置文件中获取指定的值和bean的属性进行绑定。所有在配置文件中能配置的属性都是在xxxxProperties类中封装,如下图:

SpringBoot12-获取配置文件中的属性名称

14、然后在配置文件中可以配置相关spring.http.encoding的属性就可以从步骤13提到的【HttpProperties】类中的属性获得,在配置文件中的值就是HttpProperties类中的属性,如下图:

SpringBoot12-获取配置文件中的属性名称
© 手抄报圈