当前位置:   article > 正文

springboot YAML配置_springboot yml配置

springboot yml配置

常规配置

YAML是JSON的超集,简洁而强大,是一种专门用来书写配置文件的语言,可以替代application.properties。

在创建一个Spring Boot项目时,引入的spring-boot-starter-web依赖间接地引入了snakeyaml依赖,snakeyaml会实现对YAML配置的解析。YAML的使用非常简单,利用缩进来表示层级关系,并且大小写敏感。

在Spring Boot项目中使用YAML只需要在resources目录下创建一个application.yml文件即可,然后向application.yml中添加如下配置:

  1. server:
  2. port: 8099
  3. servlet:
  4. context-path: /
  5. tomcat:
  6. uri-encoding: UTF-8

这一段配置等效于application.properties中的如下配置:

  1. server.port=8099
  2. server.servlet.context-path=/
  3. server.tomcat.uri-encoding=UTF-8

此时可以将resources目录下的application.properties文件删除,完全使用YAML完成文件的配置。

复杂配置

YAML不仅可以配置常规属性,也可以配置复杂属性,例如下面一组配置:

  1. my:
  2. name: 江南皮革
  3. address: 中国

Properties配置文件一样,这一段配置也可以注入一个Bean中,代码如下:

  1. @Component
  2. @ConfigurationProperties(prefix = "my")
  3. public class User
  4. {
  5. private String name;
  6. private String address;
  7. private String[] favorites;

YAML还支持列表的配置,例如下面一组配置:

  1. my:
  2. name: 江南皮革
  3. address: 中国
  4. favorites:
  5. - 数组1
  6. - 数组2
  7. - 数组3
  8. hobby:
  9. - 元素1
  10. - 元素2
  11. - 元素3

这一组配置可以注入如下Bean中:

  1. @Component
  2. @ConfigurationProperties(prefix = "my")
  3. public class User
  4. {
  5. private String name;
  6. private String address;
  7. private String[] favorites;
  8. private List<String> hobby;

YAML还支持更复杂的配置,即集合中也可以是一个对象,例如下面一组配置:

  1. you:
  2. productDetailList:
  3. - name: 江南皮革
  4. address: 中国
  5. favorites:
  6. - 数组1
  7. - 数组2
  8. - 数组3
  9. - name: 西北牛皮
  10. address: 西安
  11. favorites:
  12. - 数组1
  13. - 数组2
  14. - 数组3

这组配置在集合中放的是一个对象,因此可以注入如下集合中:

  1. @Component
  2. @ConfigurationProperties("you")
  3. public class Product
  4. {
  5. private List<ProductDetail> productDetailList;
  1. @Component
  2. public class ProductDetail
  3. {
  4. private String name;
  5. private String address;
  6. private List<String> favorites;

在Spring Boot中使用YAML虽然方便,但是YAML也有一些缺陷,例如无法使用@PropertySource注解加载YAML文件,如果项目中有这种需求,还是需要使用Properties格式的配置文件。

下面是项目具体情况截图

代码如下:

application.yml

  1. server:
  2. port: 8099
  3. servlet:
  4. context-path: /
  5. tomcat:
  6. uri-encoding: UTF-8
  7. my:
  8. name: 江南皮革
  9. address: 中国
  10. favorites:
  11. - 数组1
  12. - 数组2
  13. - 数组3
  14. hobby:
  15. - 元素1
  16. - 元素2
  17. - 元素3
  18. you:
  19. productDetailList:
  20. - name: 江南皮革
  21. address: 中国
  22. favorites:
  23. - 数组1
  24. - 数组2
  25. - 数组3
  26. - name: 西北牛皮
  27. address: 西安
  28. favorites:
  29. - 数组1
  30. - 数组2
  31. - 数组3

 User.java

  1. package com.shrimpking.pojo;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.stereotype.Component;
  4. import java.util.Arrays;
  5. import java.util.List;
  6. /**
  7. * @author user1
  8. */
  9. @Component
  10. @ConfigurationProperties(prefix = "my")
  11. public class User
  12. {
  13. private String name;
  14. private String address;
  15. private String[] favorites;
  16. private List<String> hobby;
  17. public User()
  18. {
  19. }
  20. public User(String name, String address, String[] favorites, List<String> hobby)
  21. {
  22. this.name = name;
  23. this.address = address;
  24. this.favorites = favorites;
  25. this.hobby = hobby;
  26. }
  27. public String getName()
  28. {
  29. return name;
  30. }
  31. public void setName(String name)
  32. {
  33. this.name = name;
  34. }
  35. public String getAddress()
  36. {
  37. return address;
  38. }
  39. public void setAddress(String address)
  40. {
  41. this.address = address;
  42. }
  43. public String[] getFavorites()
  44. {
  45. return favorites;
  46. }
  47. public void setFavorites(String[] favorites)
  48. {
  49. this.favorites = favorites;
  50. }
  51. public List<String> getHobby()
  52. {
  53. return hobby;
  54. }
  55. public void setHobby(List<String> hobby)
  56. {
  57. this.hobby = hobby;
  58. }
  59. @Override
  60. public String toString()
  61. {
  62. return "User{" + "name='" + name + '\'' + ", address='" + address + '\'' + ", favorites=" + Arrays.toString(favorites) + ", hobby=" + hobby + '}';
  63. }
  64. }

UserController.java

  1. package com.shrimpking.controller;
  2. import com.shrimpking.pojo.User;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. /**
  7. * @author user1
  8. */
  9. @RestController
  10. public class UserController
  11. {
  12. @Autowired
  13. private User user;
  14. @GetMapping("/user")
  15. public String user()
  16. {
  17. return user.toString();
  18. }
  19. }

Product.java

  1. package com.shrimpking.pojo;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.stereotype.Component;
  4. import java.util.List;
  5. /**
  6. * @author user1
  7. */
  8. @Component
  9. @ConfigurationProperties("you")
  10. public class Product
  11. {
  12. private List<ProductDetail> productDetailList;
  13. public Product()
  14. {
  15. }
  16. public List<ProductDetail> getProductDetailList()
  17. {
  18. return productDetailList;
  19. }
  20. public void setProductDetailList(List<ProductDetail> productDetailList)
  21. {
  22. this.productDetailList = productDetailList;
  23. }
  24. @Override
  25. public String toString()
  26. {
  27. return "Product{" + "productDetailList=" + productDetailList + '}';
  28. }
  29. }

ProductDetail.java

  1. package com.shrimpking.pojo;
  2. import org.springframework.stereotype.Component;
  3. import java.util.List;
  4. /**
  5. * @author user1
  6. */
  7. @Component
  8. public class ProductDetail
  9. {
  10. private String name;
  11. private String address;
  12. private List<String> favorites;
  13. public ProductDetail()
  14. {
  15. }
  16. public ProductDetail(String name, String address, List<String> favorites)
  17. {
  18. this.name = name;
  19. this.address = address;
  20. this.favorites = favorites;
  21. }
  22. public String getName()
  23. {
  24. return name;
  25. }
  26. public void setName(String name)
  27. {
  28. this.name = name;
  29. }
  30. public String getAddress()
  31. {
  32. return address;
  33. }
  34. public void setAddress(String address)
  35. {
  36. this.address = address;
  37. }
  38. public List<String> getFavorites()
  39. {
  40. return favorites;
  41. }
  42. public void setFavorites(List<String> favorites)
  43. {
  44. this.favorites = favorites;
  45. }
  46. @Override
  47. public String toString()
  48. {
  49. return "ProductDetail{" + "name='" + name + '\'' + ", address='" + address + '\'' + ", favorites=" + favorites + '}';
  50. }
  51. }

ProductController.java

  1. package com.shrimpking.controller;
  2. import com.shrimpking.pojo.Product;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.web.bind.annotation.GetMapping;
  5. import org.springframework.web.bind.annotation.RestController;
  6. /**
  7. * @author user1
  8. */
  9. @RestController
  10. public class ProductController
  11. {
  12. @Autowired
  13. private Product product;
  14. @GetMapping("/product")
  15. public String test()
  16. {
  17. return product.toString();
  18. }
  19. }

运行截图

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/90570
推荐阅读
相关标签
  

闽ICP备14008679号