前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springboot系列学习(九):yml配置文件里面到底可以写什么,追溯原理,这个里面就可以看到到底可以写什么

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

作者头像
一写代码就开心
发布2020-11-20 10:03:24
8990
发布2020-11-20 10:03:24
举报
文章被收录于专栏:java和python

回顾之前的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:封装配置文件中相关属性;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/09/29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 回顾之前的spring.properties文件的作用
  • spring.properties和yml文件的联系
  • 回忆之前的自动给实体类赋值
  • 分析端口号的自动配置
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档