spring boot配置文件 yml properties
2023-04-15 20:41 youxin 阅读(135) 评论(0) 编辑 收藏 举报 在Spring Boot项目中我们有着默认的配置文件application.properties
或者是是application.yml
,可以进行封装出来的属性进行配置。有的时候我们需要根据不同的环境进行不同的配置。这里Spring Boot也提供了Spring.profiles.active
来进行我们不同环境配置的选择,如application-{profile}.properties
或者application-{profile}.yml
。profile可以是我们的环境变量,如比较常见的dev,test等。
此外,Spring Boot也提供了很多我们自定义配置或者自定义配置文件的方法,然后在统一通过它的自动装配来进行实现和管理。这里通过官方文档的介绍然后举几个比较常见使用的例子。
一、配置文件
spring boot 的默认配置文件有两个,分别为:
1、application.properties
2、application.yml
yaml 格式要求:
冒号:后面必须有空格,下级属性缩进一格
若包含特殊字符应用单引号括起来,若包含单引号,则对单引号使用转义字符
双引号中转义字符会生效,单引号中的转义字符原样输出
————————————————
原文链接:https://blog.csdn.net/weixin_43520586/article/details/121160775
springboot中配置文件application.yaml的位置及多环境配置
springboot中配置文件application.yaml的四个位置
四个位置的优先级
优先级指的是,当四个位置的配置文件全部都存在的时候,读取的顺序:
位置一 > 位置二 > 位置三 > 位置四
在SpringBoot项目读取yml配置文件中参数时,使用@Value("${friend.name}") 去读取配置中参数值。
配置如下:
friend:
name: zhangsan
age: 20
项目启动时报错:
java.lang.IllegalArgumentException: Could not resolve placeholder 'friend.name' in value "${friend.name}"
1
检查配置是否写错,k: v参数中是否带有空格,写法是正常的,又检查了启动类模块下中yml文件的参数是否可以正常读取,发现是可以正常读取到配置中的值。
原因
如果SpringBoot项目多个模块中都有application.yml文件,则会只读取有主启动类中的yml文件,不会读取其他模块中的配置文件,例如:在api模块中有一个application.yml文件,在core模块中有一个application.yml,如果启动core模块中的主启动类,则只会加载core模块中的application.yml文件,并不会加载api模块中的application.yml文件。
解决方案
1:修改其他模块中的yml文件的名字为application-xxx.yml
2:在主启动模块中的application.yml中配置如下内容
spring:
profiles:
active: xxx
1
2
3
这样项目就可以正常启动,并读取配置值了
————————————————
原文链接:https://blog.csdn.net/li02112017/article/details/117320965
@Component和@Configuration作为配置类的差别
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/long476964/article/details/80626930
@PropertySource 注解加载指定的配置文件,注解常用属性如下:
注解常用属性如下:
String name() default "" 指明此属性源的名称。如果省略,将根据基础资源的描述生成名称。
String[] value()
指示要加载的属性文件的资源位置。
1、支持传统和基于XML的属性文件格式,如 {"classpath:/com/myco/app.properties"} 或 {"file:/path/to/file.xml"}
2、支持加载类路径下的文件以及本地磁盘上的文件。
boolean ignoreResourceNotFound() default false 指示 value 资源位置查找失败时是否忽略,默认 false,找不到就会报错。
String encoding() default "" 给定资源的特定字符编码,例如“UTF-8”
Class<? extends PropertySourceFactory> factory()
指定自定义属性SourceFactory(如果有)。
默认情况下,将使用标准资源文件的默认工厂。
下面演示使用 @PropertySource 注解 加载类路径下的 user.properties 配置文件,为 User.java POJO 对象的属性赋值。
/** * 用户···实体 * {@code @Component} 将本来标识为一个 Spring 组件,因为只有是容器中的组件,容器才会为 @ConfigurationProperties 提供此注入功能 * {@code @PropertySource} 指明加载类路径下的哪个配置文件来注入值 * {@code @ConfigurationProperties} 表示 告诉 SpringBoot 将本类中的所有属性和配置文件中相关的配置进行绑定; * * prefix = "user1" 表示 将配置文件中 key 为 user 的下面所有的属性与本类属性进行一一映射注入值,如果配置文件中- * * 不存在 "user1" 的 key,则不会为 POJO 注入值,属性值仍然为默认值 * * @author wangmaoxiong * Created by Administrator on 2018/7/11 0011. */ @Component @PropertySource(value = {"classpath:user.properties"}) @ConfigurationProperties(prefix = "user1") public class UserProperty { private Integer id; private String lastName; private Integer age; private Date birthday; private List<String> colorList; private Map<String, String> cityMap; private Dog dog;
原文链接:https://blog.csdn.net/wangmx1993328/article/details/81005170
@ConfigurationProperties和@Value注解用于获取配置文件中的属性定义并绑定到Java Bean或属性中
@ConfigurationProperties最适用于所有具有相同前缀的分层属性,用于将配置文件中mail开头的属性绑定到POJO中,@Configuration也可以替换成@Component、@Service等其他注解。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2018-04-15 Linux Performance 一文
2018-04-15 linux申请strace ,lstrace, ptrace, dtrace
2018-04-15 linux神器strace
2014-04-15 Church encoding
2014-04-15 jquery 插件JTable使用
2013-04-15 python简介
2012-04-15 C++ 各种排序算法的区别