springboot读取application.yml中的值

本文介绍了如何在YAML文件中定义自定义变量,并通过Spring框架的@Value注解将这些变量映射到Java类中。同时探讨了YAML语法中双引号与单引号的区别,以及如何使用${}

yml中自定义一些变量

var:
  analyze_url: test
  ocr_url: test
  microsoft_key: test

映射到类变量中

@Getter
@Component
public class varModel {
    @Value("${var.analyze_url}")
    private String analyze_url;
    @Value("${var.ocr_url}")
    private String ocr_url;
    @Value("${var.microsoft_key}")
    private String microsoft_key;
}//end

yaml 语法中 双引号和单引号是不一样的,如

name: "zhangsan \n list"  获取的值为 zhangsan 换行 list

name : 'zhangsan \n list'  获取的值为zhangsan \n list

也就是说双引号中的特殊字符还是表示其原来的意思,单引号中的特殊字符就只是一个特殊字符。

使用${} 语法获取yml中其他数据。

转载https://www.cnblogs.com/hcfan/p/9920895.html

<think>好的,用户问的是在Spring Boot中如何读取application.yml中的属性。我需要详细回答这个问题。首先,我应该回忆一下常见的几种方法。 第一想到的是使用@Value注解,这是最基础的方式,可以注入单个属性。然后是@ConfigurationProperties,这个适合将一组属性映射到一个对象中,结构清晰。还有Environment对象,可以通过getProperty方法获取属性。另外,可能还有通过注入ApplicationContext来获取Bean的方式,过这可能太常见。 接下来,我需要考虑用户可能的场景。用户之前的问题涉及调用多个接口,可能需要配置多个属性,比如同的URL或者分页参数。这时候使用@ConfigurationProperties可能更合适,因为它可以将相关属性集中管理。比如用户之前处理分页时需要多个参数,配置成对象会更方便。 另外,用户之前提到循环调用接口,可能涉及到性能优化或者异步处理,但当前的问题是关于读取配置属性,所以暂时需要涉及这些,但可能需要考虑属性的动态变化,比如是否需要自动刷新。过用户没有提到这点,可能暂时需要,但可以作为相关问题提出。 然后,我需要给出示例代码。比如,先展示application.yml的结构,比如自定义属性如my.config.key。然后分别用@Value、@ConfigurationProperties、Environment来演示如何读取。 需要注意@ConfigurationProperties需要启用,通常在Spring Boot 2.4之后默认启用,但可能需要提醒用户添加@EnableConfigurationProperties注解,如果他们使用较旧版本的话。 还要注意属性名称的匹配规则,比如驼峰命名和短横线命名的转换。例如,yml中的my-prop对应java中的myProp。 在示例代码中,应该包括每个方法的代码片段,并说明其适用场景。比如,当需要多个属性时,用@ConfigurationProperties更整洁。 相关问题方面,用户可能想知道如何处理嵌套属性、列表属性、动态刷新,或者在同环境中的配置。这些都是常见的后续问题,所以需要列出来。 最后,确保回答符合格式要求,代码用Java示例,结构清晰,并在末尾列出相关问题。 </think>在Spring Boot中读取`application.yml`中的属性有以下3种主流方式: ### 1. 使用@Value注解(适合单个属性) ```java import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class MyConfig { @Value("${my.config.key}") private String myKey; public String getMyKey() { return myKey; } } ``` ### 2. 使用@ConfigurationProperties(适合属性组) ```java import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Component @ConfigurationProperties(prefix = "my.config") public class MyConfigProperties { private String key; private int timeout; // Getters and Setters public String getKey() { return key; } public void setKey(String key) { this.key = key; } public int getTimeout() { return timeout; } public void setTimeout(int timeout) { this.timeout = timeout; } } ``` ### 3. 使用Environment对象(适合动态获取) ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; @Service public class ConfigService { @Autowired private Environment env; public String getConfigValue() { return env.getProperty("my.config.key"); } } ``` ### application.yml配置示例: ```yaml my: config: key: "test-value" timeout: 3000 servers: - server1.example.com - server2.example.com ``` ### 复杂结构处理(列表/嵌套对象): ```java @Component @ConfigurationProperties(prefix = "my.config") public class ComplexConfig { private String key; private List<String> servers = new ArrayList<>(); // Getters and Setters public List<String> getServers() { return servers; } public void setServers(List<String> servers) { this.servers = servers; } } ```
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值