Spring Boot 02 —— YAMl配置文件

YAMl配置文件:

Spring Boot有两种配置文件 application.properties  和  application.yml  ,名称是固定不变的,yaml是一种比 xml  json 更适合的配置文件,不用关注属性的开闭。

1 语法格式:

key:(空格)value       必须要有空格,以换行、空格的缩进来代表层级关系,并且大小写敏感

server:
  port: 8080

 2 值的写法:

字面量:普通数值(数字,字符串,布尔)

map、list、 对象:

person:
  lastName: yanghui
  age: 21
  birthday: 1998/08/02
maps: {x: yang,n: huiyi} list: - yang - huiyi dog: name: 小狗 age: 3

 

3 配置文件自动注入: @ConfigurationProperties(prefix = "person") 注解:告诉springboot将本类的所有属性和配置文件的内容进行绑定; prefix = "person" 和person进行绑定

          @Component 注解:把类加入到 容器中,这样才能使用ConfigurationProperties

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastName;
    private Integer age;
    private Date birthday;

    private Map<String,Object> maps;
    private List<Object> list;
    private Dog dog;

    ...

 如果报错:

        <!--配置文件处理器:当编写配置文件的时候会有提示。-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

  

4 添加配置文件处理器:想要让上边的注释生效,需要添加配置文件处理器。

官方文档:https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/configuration-metadata.html#configuration-metadata-annotation-processor

        <!--配置文件处理器:当编写配置文件的时候会有提示。-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

 

5 其他:如果只是要在配置文件中简单获取 某个值,则可以使用 @Value

    @Value("${person.lastName}")
    private  String lastName;

 6 其他2:加载类路径下的其他配置文件 @PropertySource(value = {"classpath:person.properties"}),原本不指定会指向application.properties。

@PropertySource(value = {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    /**
     * 如果只是要在配置文件中简单获取 某个值,则可以使用 @Value
     * @Value("${person.lastName}")
     */
    private  String lastName;
    private Integer age;
    private Date birthday;

    private Map<String,Object> maps;
    private List<Object> list;
    private Dog dog;

 加载spring的配置文件@ImportResource(locations = {"classpath:beans.xml"}) 加在主程序上边的注释   -----》不推荐使用。

@ImportResource(locations = {"classpath:beans.xml"})
@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

 推荐使用:@Configuration  来标注一个类是配置类,用来代替上边的spring配置文件

 7 Profile 多环境支持: 使用多种配置文件,生产环境下的配置文件,测试环境下使用的配置文件。

具体详细查一下课程笔记的文档

 

8 配置文件可以位于不同位置:不同位置配置文件的优先级不同,高优先级的配置文件会覆盖相同内容的配置文件,但是不相同的会形成互补

当前项目的根目录 里的 config

当前项目的根目录

resource资源文件夹 里的 config

resource资源文件夹

–file:./config/
–file:./ 
–classpath:/config/ 
–classpath:/

 *从上往下优先级降低*

 

官方配置文件文档:https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/common-application-properties.html

 

解决配置文件 application.properties 乱码问题: 在settings查找file Encodings  ;选择utf-8   ,勾选运行时编译成 ascii 编码。

 

 

posted @ 2019-10-05 15:02  柠檬茶lemon  阅读(194)  评论(0编辑  收藏  举报