springboot系列学习(九):yml配置文件里面到底可以写什么,追溯原理,这个里面就可以看到到底可以写什么

2020-11-20 10:03:24 浏览数 (2)

回顾之前的spring.properties文件的作用

之前已经讲过,这个自动的配置和spring.properties 这个文件有一定的关系。这个spring.properties里面就是一些类的路径,有很多的路径,一个路径对应一个类,只要项目启动,加载spring.properties这个文件,走里面的路径,就可以找到对应的类,这样,这个类就加载到了项目里面,但是不是全部的路径下面的类都可以加载到项目里面,因为路径里面的类上面有一个注解,这个注解会判断你有没有添加对应的依赖,就是在pom文件里面有没有加对应的依赖。判断加了,那么就会将这个类自动装配到项目里面。

以上的这些路径里面的类是依赖自己的配置,现在我们想要写对应依赖的自己的配置,比如,项目启动的端口号我想自己定义,编码的格式也是自己的定义,这个就需要yml文件了,但是我们在yml里面在写呢?

spring.properties和yml文件的联系

我们打开spring.properties文件,找一个我们熟悉的路径,进去,比如

这个路径下的就是这个类

现在我们分析这个类上面的注解:

代码语言:javascript复制
//表示这是一个配置类
@Configuration(proxyBeanMethods = false)
//这个是自动配置的属性
@EnableConfigurationProperties(ServerProperties.class)
//ConditionalOn开头的就是spring的底层注解,这个的意思是看当前的项目是不是web项目,是的话就开启这个注解
@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
//是不是存在字符编码的过滤器,存在的话就开启
@ConditionalOnClass(CharacterEncodingFilter.class)
//是否存在这个,不存在走默认的
@ConditionalOnProperty(prefix = "server.servlet.encoding", value = "enabled", matchIfMissing = true)

回忆之前的自动给实体类赋值

springboot系列学习(六)yml文件的学习(小白必看)

以上的这篇文章里面就是讲解了自动给实体类赋值。现在简单说一下,就是我们有一个实体类,现在想要自动给值,但是不像修改实体类代码,那么就需要在实体类上面写注解,利用注解引入,也就是在实体类上面写注解,在yml文件里面写值,那么项目启动的时候,这个yml的值就会根据注解自动的装配到实体类上面。

根据以上的原理,现在我们想要修改端口号,端口号编写的类不能动,这个类上面有一个注解,那么我们在yml文件里面定义自己的端口号,因为注解的原因,在项目启动的时候,那么这个yml里面我们写的端口号就自动的装配到这个写端口号的类里面了,这样就使用了我们写的端口号。

分析端口号的自动配置

在spring.properties里面找到写端口的路径,进入对应的类就是下面的这个

这个类上面有一个注解,这个注解意思就是自动装配外部自定义的值。

注解里面有一个prefix属性,这个值的意思就是 要找到外部以这个值为键的对象引入,这个类里面有很多的属性,比如端口号的属性是port.

那么我们在自己的yml文件里面要修改端口号,那么就需要这样写

这样项目一启动的时候,这个路径下面的类就会自动的到yml文件里面找,有没有以server开头的,并且属性是port的这个对象,有的话就将这个后面的值配置到项目里面,这样我们就自己修改了项目启动后的端口。

总结

以后我们想要知道这个yml里面可以写什么,那么找spring.properties这个文件,看里面的路径,找到对应路径里面的类,看这个类上面的注解,还有这个类里面的属性。那么组合起来就是我们可以在yml里面配置的东西

1、SpringBoot启动会加载大量的自动配置类

2、我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;

3、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件存在在其中,我们就不需要再手动配置了)

4、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们只需要在配置文件中指定这些属性的值即可;

xxxxAutoConfigurartion:自动配置类;给容器中添加组件

xxxxProperties:封装配置文件中相关属性;

0 人点赞