Spring Boot微服务从yml文件中加载配置(使用@Value和@ConfigurationProperties)

这篇具有很好参考价值的文章主要介绍了Spring Boot微服务从yml文件中加载配置(使用@Value和@ConfigurationProperties)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

记录:398

场景:在Spring Boot的微服务中从application.yml等yml文件中加载自定义配置内容。使用@Value直接加载单个配置。使用@ConfigurationProperties注解把一个或者多个配置加载为Java对象。

版本:JDK 1.8,SpringBoot 2.6.3

1.使用@Value注解加载配置

使用注解@RestController、@Service、@Component等标记的类中,都可以使用@Value注解从yml文件中加载配置取值。

1.1在yml文件配置

hub:
  example:
    city-name: '杭州'

1.2使用@Value取值

 @Value("${hub.example.city-name}")
 private String cityName;

2.从yml文件加载配置为普通Java对象

在Java类上,加@ConfigurationProperties注解,实现从yml文件加载配置为普通Java对象。

注解@ConfigurationProperties的属性prefix是指定扫描yml文件中的配置的前缀。

注解@Component指定该类交给Spring创建Bean对象。

使用时,在类变量上加@Autowired直接注入就可以取值。

2.1在yml文件配置

hub:
  example:
    city:
      city-id: 330100
      city-name: '杭州'

2.2对应Java类

@Component
@ConfigurationProperties(prefix = "hub.example.city")
public class CityProperties {
  private Long cityId;
  private String cityName;
  public Long getCityId() {
      return cityId;
  }
  public void setCityId(Long cityId) {
      this.cityId = cityId;
  }
  public String getCityName() {
      return cityName;
  }
  public void setCityName(String cityName) {
      this.cityName = cityName;
  }
  public String toString() {
      return "CityProperties(cityId=" + cityId + ",cityName=" + cityName + ")";
  }
}

3.从yml文件加载配置为List类型

在Java类上,加@ConfigurationProperties注解,实现从yml文件加载配置为List类型。

注解@ConfigurationProperties的属性prefix是指定扫描yml文件中的配置的前缀。

注解@Component指定该类交给Spring创建Bean对象。

使用时,在类变量上加@Autowired直接注入就可以取值。

3.1在yml文件配置

在yml文件中的短横线"-"代表是List类型属性。

hub:
  example:
    province:
      province-id: 330000
      province-name: '浙江'
      city-list:
        - city-id: 330100
          city-name: '杭州'
        - city-id: 330201
          city-name: '宁波'

3.2对应Java类

@Component
@ConfigurationProperties(prefix = "hub.example.province")
public class ProvinceProperties {
  private Long provinceId;
  private String provinceName;
  private List<CityProperties> cityList;
  public Long getProvinceId() {
    return provinceId;
  }
  public void setProvinceId(Long provinceId) {
    this.provinceId = provinceId;
  }
  public String getProvinceName() {
    return provinceName;
  }
  public void setProvinceName(String provinceName) {
    this.provinceName = provinceName;
  }
  public List<CityProperties> getCityList() {
    return cityList;
  }
  public void setCityList(List<CityProperties> cityList) {
    this.cityList = cityList;
  }
  public String toString() {
    return "ProvinceProperties(provinceId=" + provinceId + ",provinceName=" + provinceName +",cityList=" +cityList.toString()+")";
  }
}

4.从yml文件加载配置为static属性

在Java类上,加@ConfigurationProperties注解,实现从yml文件加载配置赋值给Java类的static属性。

注解@ConfigurationProperties的属性prefix是指定扫描yml文件中的配置的前缀。

注解@Component指定该类交给Spring创建Bean对象。

使用时,直接使用类名加属性名或者类名加方法名就可以取值。

4.1在yml文件配置

hub:
  example:
    static-city:
      city-id: 330201
      city-name: '宁波'

4.2对应Java类

在Java类中,属性必须是static修饰。get方式必须是static修饰。set方法不能使用static修饰。

@Component("staticCityProperties")
@ConfigurationProperties(prefix = "hub.example.static-city")
public class StaticCityProperties {
  private static Long cityId;
  private static String cityName;
  public static Long getCityId() {
    return cityId;
  }
  public void setCityId(Long cityId) {
    StaticCityProperties.cityId = cityId;
  }
  public static String getCityName() {
    return cityName;
  }
  public void setCityName(String cityName) {
    StaticCityProperties.cityName = cityName;
  }
}

5.应用

本例在Controller类中应用以上功能。

5.1应用

@RestController
@RequestMapping("/hub/example/load")
@Slf4j
public class LoadController {
  //使用@Value加载yml配置
  @Value("${hub.example.city-name}")
  private String cityName;
  //使用@Autowired注入属性
  @Autowired
  private CityProperties city;
  @Autowired
  private ProvinceProperties province;
  @PostMapping("/loadData")
  public Object loadData() {
    log.info("1.使用@Value从yml文件加载配置: " + cityName);
    log.info("2.从yml文件加载配置为普通Java对象: " + city.toString());
    log.info("3.从yml文件加载配置为List类型: " + province.toString());
    log.info("4.从yml文件加载配置为static属性: " + StaticCityProperties.getCityName());
    return "执行成功";
  }
}

5.2输出结果

1.使用@Value从yml文件加载配置: 杭州
2.从yml文件加载配置为普通Java对象: CityProperties(cityId=330100,cityName=杭州)
3.从yml文件加载配置为List类型: ProvinceProperties(provinceId=330000,provinceName=浙江,cityList=[CityProperties(cityId=330100,cityName=杭州), CityProperties(cityId=330201,cityName=宁波)])
4.从yml文件加载配置为static属性: 宁波

以上,感谢。

2023年4月11日文章来源地址https://www.toymoban.com/news/detail-532220.html

到了这里,关于Spring Boot微服务从yml文件中加载配置(使用@Value和@ConfigurationProperties)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包