(一)快速创建Spring Boot项目,yml语法以及如何读取yml

(一)快速创建Spring Boot项目,yml语法以及如何读取ymlscope test scope 最后输出 Person name 张三 age 25 boss true birthDate

大家好,欢迎来到IT知识分享网。

(一)快速创建Spring Boot项目,yml语法以及如何读取yml

Spring Boot是简化Spring应用的开发的一个框架。

优点:

  • 快速创建独立运行的Spring项目以及与主流框架集成。
  • 使用嵌入式的Servlet容器,比如Tomcat、Jetty,应用无需打成war包。
  • starters自动依赖与版本控制。
  • 大量的自动配置,简化开发,也可修改默认值。
  • 无需配置XML,无代码生成,开箱即用。
  • 准生产环境的运行时应用监控。
  • 与云计算的天然集成。

搭建环境基本要求:必须JDK版本在1.7以上。

一、如何快速搭建Spring Boot项目?

  • 1、打开IDEA窗口
(一)快速创建Spring Boot项目,yml语法以及如何读取yml

  • 2、设置MAVEN
(一)快速创建Spring Boot项目,yml语法以及如何读取yml

(一)快速创建Spring Boot项目,yml语法以及如何读取yml

  • 3、创建项目
(一)快速创建Spring Boot项目,yml语法以及如何读取yml

(一)快速创建Spring Boot项目,yml语法以及如何读取yml

(一)快速创建Spring Boot项目,yml语法以及如何读取yml

(一)快速创建Spring Boot项目,yml语法以及如何读取yml

(一)快速创建Spring Boot项目,yml语法以及如何读取yml

(一)快速创建Spring Boot项目,yml语法以及如何读取yml

  • 4、新建一个控制类
(一)快速创建Spring Boot项目,yml语法以及如何读取yml

  • 5、启动spring boot项目
(一)快速创建Spring Boot项目,yml语法以及如何读取yml

  • 6、访问spring boot项目
(一)快速创建Spring Boot项目,yml语法以及如何读取yml

二、固定的配置文件application.properties或者application.yml

yml:这种语言以数据做为中心,比json、xml更适合做配置文件。

1、yml的基本语法:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • ‘#’表示注释

2、yml支持的数据类型:

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 纯量(scalars):单个的、不可再分的值

3、数据类型对象、数组、纯量举例

  • 对象:对象键值对使用冒号结构表示,key: value,冒号后面必须加空格。
也可以使用 key:{key1: value1, key2: value2, ...} 还可以使用 key: child-key: value child-key2: value2 较为复杂的对象格式,可以使用问号加一个空格代表一个复杂的 key,配合一个冒号加一个空格代表一个 value ? - complexkey1 - complexkey2 : - complexvalue1 - complexvalue2 意思即对象的属性是一个数组 [complexkey1,complexkey2],对应的值也是一个数组 [complexvalue1,complexvalue2]
  • 数组:以-开头的行表示一个数组
  • - A - B - C

    多维数组

    key: [value1, value2, ...]

    数据结构的子成员是一个数组,则可以在该项下面缩进一个空格。

    - - A - B - C

    一个相对复杂的例子:意思是 companies 属性是一个数组,每一个数组元素又是由 id、name、price 三个属性构成。

    companies: - id: 1 name: company1 price: 200W - id: 2 name: company2 price: 500W

    数组也可以使用流式(flow)的方式表示:

    companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]

    复合结构:数组和对象组合。比如:

    languages: - Ruby - Perl - Python websites: YAML: yaml.org Ruby: ruby-lang.org Python: python.org Perl: use.perl.org

    转换为 json 为:

    { languages: [ 'Ruby', 'Perl', 'Python'], websites: { YAML: 'yaml.org', Ruby: 'ruby-lang.org', Python: 'python.org', Perl: 'use.perl.org' } }
  • 纯量:包括字符串、布尔值、整数、浮点数、Null、时间、日期。
  • boolean: - TRUE #true,True都可以 - FALSE #false,False都可以 float:# - 3.14 - 6.e+5 #可以使用科学计数法 int: - 123 - 0b1010_0111_0100_1010_1110 #二进制表示 null: nodeName: 'node' parent: ~ #使用~表示null string: - 哈哈 - 'Hello world' #可以使用双引号或者单引号包裹特殊字符 - newline newline2 #字符串可以拆成多行,每一行会被转化成一个空格 date: - 2018-02-17 #日期必须使用ISO 8601格式,即yyyy-MM-dd datetime: - 2018-02-17T15:02:31+08:00 #时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

    三、使用代码读取yml配置文件

    • 新建bean
    package com.test.demo.springbootdemo01.bean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; / * 读取yml配置文件 * @author yang33 * @date 2020/4/18 16:42 */ @Component @ConfigurationProperties(prefix = "person") public class Person { private String name; private int age; private Boolean boss; private Date birthDate; private Map 
      
        maps; private List 
       
         lists; private Dog dog; public class Dog { private String name; private int age; private String sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Boolean getBoss() { return boss; } public void setBoss(Boolean boss) { this.boss = boss; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public Map 
        
          getMaps() { return maps; } public void setMaps(Map 
         
           maps) { this.maps = maps; } public List 
          
            getLists() { return lists; } public void setLists(List 
           
             lists) { this.lists = lists; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", boss=" + boss + ", birthDate=" + birthDate + ", maps=" + maps + ", lists=" + lists + ", dog=" + dog + '}'; } } 
            
           
          
         
        
      
    package com.test.demo.springbootdemo01.bean; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; / * 读取yml配置文件 * @author yang33 * @date 2020/4/18 16:42 */ @Component @ConfigurationProperties(prefix = "person") public class Person { private String name; private int age; private Boolean boss; private Date birthDate; private Map 
      
        maps; private List 
       
         lists; private Dog dog; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Boolean getBoss() { return boss; } public void setBoss(Boolean boss) { this.boss = boss; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public Map 
        
          getMaps() { return maps; } public void setMaps(Map 
         
           maps) { this.maps = maps; } public List 
          
            getLists() { return lists; } public void setLists(List 
           
             lists) { this.lists = lists; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", boss=" + boss + ", birthDate=" + birthDate + ", maps=" + maps + ", lists=" + lists + ", dog=" + dog + '}'; } } 
            
           
          
         
        
      

    注解@ConfigurationProperties,是要告诉spring boot将本类的所有属性与配置文件中的相关配置进行绑定,prefix = “person”对配置文件中person下的所有属性一一映射。

    刚加上@ConfigurationProperties,会报错:spring boot configuration annotation processor not configured

    (一)快速创建Spring Boot项目,yml语法以及如何读取yml

    在pom.xml文件中加上下面依赖就可以了

     
       
       
         org.springframework.boot 
        
       
         spring-boot-configuration-processor 
        
       
         true 
        
      

    加上这个依赖后,再次在配置文件中修改或者添加内容,就会有提示,方便很多。

    (一)快速创建Spring Boot项目,yml语法以及如何读取yml

    代码提示

    @Value注解的功能与@ConfigurationProperties类似,都是获取配置文件中属性的值,并且与配置文件的属性一一映射。

    @Value注解的功能与@ConfigurationProperties类似,都是获取配置文件中属性的值,并且与配置文件的属性一一映射。

    两种方式的应用场景视情况而定,如果只是仅仅获取几个配置文件的属性值,可以使用@Value;如果是批量的,比如映射一个JavaBean,那么就使用@ConfigurationProperties。

    (一)快速创建Spring Boot项目,yml语法以及如何读取yml

    @ConfigurationProperties和@Value对比

    • application.yml配置文件这样写:
    person: name: 张三 age: 25 boss: true birthDate: 1995/2/15 maps: {k1: v1,k2: v2} lists: - 李四 - 王五 dog: name: 小白 age: 3 sex: 雄性
    • 输出配置文件信息
    (一)快速创建Spring Boot项目,yml语法以及如何读取yml

    代码如下:

    package com.test.demo.springbootdemo01; import com.test.demo.springbootdemo01.bean.Person; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @SpringBootTest class SpringbootDemo01ApplicationTests { @Autowired private Person person; @Test void contextLoads() { System.out.println(person.toString()); } }

    启动报错:Error running ‘SpringbootDemo01ApplicationTests.contextLoads’: Failed to resolve org.junit.platform:junit-platform-launcher:1.5.2

    原因是:IntelliJ试图在不使用IDE中配置的Maven“用户设置文件”(settings.xml)的情况下,解决所需的工件本身。它将直接连接到Maven Central,但被我的雇主屏蔽了。

    解决办法:在pom.xml文件添加依赖:

     
       
       
         org.junit.platform 
        
       
         junit-platform-launcher 
        
       
         test 
        
      

    最后输出:

    Person{name='张三', age=25, boss=true, birthDate=Wed Feb 15 00:00:00 CST 1995, maps={k1=v1, k2=v2}, lists=[李四, 王五], dog=Dog{name='小白', age=3, sex='雄性'}}

    Spring Boot系列知识,下章节内容更加有料,请加关注,不会迷路的。

    免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/89995.html

    (0)
    上一篇 2026-04-02 07:16
    下一篇 2026-04-02 17:45

    相关推荐

    发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    关注微信