学习笔记——Spring Boot(2)

YAML语法格式及应用

      项目的属性配置是学习中的很重要的一点,也就是自动配置时要修改默认属性的时候,我们就要在配置文件中做出说明。而配置文件除了传统的application.properties,这些年也流行起了application.yml,也就是上面说的YAML。而YAML和property差不多的使用方法,除了语法有些差距。

 

刚开始先来看看最最传统的配置文件的方法:XML方式,它和Property和YAML语法格式之间的差距:

XML:

<server>
    <port>8081</port>
</server>

 

YAML:

server:
  port: 8081

 

Property:

server.port=8081

 

 可以看出,传统的XML方式大量时间花费在<></>上,YAML就很好的完善和简化了步骤。

 

下面我们就先说一下YAML的语法:

(1)表示一对键对:”K: V”(注意:冒号和V之间一定要有空格,这是yaml的格式!!!)

 

(2)YAML是以空格的缩进来控制层级关系,只要是左对齐的一列数据,都是同一层级的,例如:

people:
    name: 小帅
    age: 20

其中name和age是同一层级的

 

(3)要注意YAML对大小写敏感,其中如果写成lastName可以使用last_name替代,即_n可以表示N。

 

(4)字符串默认不用加上双引号或单引号,假如加上双引号,比如“\n”的话就会换行,假如加上单引号,比如‘\n’就直接输出\n。

 

(5)除了使用K: V方式,还可以使用行内写法:

people: {name: zhangsan,age: 18}

 

(6)数组表示:

pets:
   - dog
   - duck
   - chick
而行内写法是pets: [dog,duck,chick]

  这些大概就是YAML的大部分语法,想在要说的是配置文件值的注入,这也是初学时候经常遇到的。

 

首先在application.yml(配置文件)中输入:

people:
    name: 小帅
    age: 20
    handsome: true
    birth: 2018/7/25
    map: {k1: v1,k2: v2}
    lists:
        - 小明
        - 小军
    dog:
        name: Tom
        age: 2

关注一下:people类里面有string,integer,boolean,data,map,list,甚至还引用了一个类dog。

 

我们在javaBean中输入:

//省略了包名和导入的包
@Component
@ConfigurationProperties(prefix="people")
public class People {
     private String name;
     private Integer age;
     private  boolean handsome;
     private Date birth;


     private Map<String,Integer> map;
     private List<String> lists;


     private Dog dog;  //类dog定义好,含name和age
     //省略了toString()函数和get()和set()函数
}

 

再在测试类中做测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @Autowired
    private People people;
   

    @Test
    public void contextLoads() {
        System.out.println(people);
    }

}

测试通过,可以看到结果。

 

另外,在打代码过程中可能发现提醒:

 

这是我们需要在POM文件中加入:

<!-- 导入配置文件处理器,配置文件进行绑定时会有提醒-->

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-configuration-processor</artifactId>

    <optional>true</optional>

</dependency>

 

 

 

补充:

  这章除了说明YAML的语法和使用,还想说一下几个在配置文件注入和与配置文件使用中很有用的注解:

@ConfigurationProperties():该注解是配置文件注入的时候必要使用的,而且主要是文件内容的整体注入的时候,表面该类是一个注入类,它的括号内含有prefix=”xxx”;其中xxx就是配置文件中整体bean的信息。举例:上面中使用@ConfigurationProperties(prefix="people") 表示注入配置文件中的people

 

@Value():该注解和上面的@ConfigurationProperties一样,都是用于配置文件的注入的,但是上面的是针对整体,而@Value是针对个体的,也就是获得某个bean的信息。使用方法是括号内配合”${xx}”或”#{xx}”使用,而$一般是取得某个bean信息,举例子:要取得上面people中的name,则使用@Value(“{people.name}”);而#中可以使用公式,例如@Value(“{11*2}”)。

 

@PropertySource:用于加载指定的配置文件,比如此时除了application.properties以外,还新建了一个people.properties,而这时候想使用people.properties作为指定的配置文件,则只需要在注入类中类上面加入@ PropertySource(value = {“classpath: person.properties”})即可(在上面例子中@Companent上加)

 

@ImportResource:导入Spring的配置文件,让配置文件中的内容生效;Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能识别,这时候想让Spring的配置文件(beans.xml之类的)生效,这加入@ImportResource。举例子,为了使beans.xml生效,这时候要加入@ImportResource(locations ={“classpath:beans.xml”}).导入Spring的配置文件让其生效

 

@Bean:给IOC容器中添加组件,代替的是之前xml中的<bean> </bean>的格式。与@Configuration配合使用

 

猜你喜欢

转载自blog.csdn.net/nanshenjiang/article/details/81216035