• 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 编码。

  • 相关阅读:
    我们为何要使用多线程,它有什么优点?
    Java并发和多线程那些事儿
    【BJG吐槽汇】第2期
    【BJG吐槽汇】第一期
    360:且用且珍惜!解决虚拟机linux启动缓慢以及ssh端卡顿的问题!
    多个不同的app应用间应该如何进行消息推送呢?
    JSONResult 封装
    MySQL 优化集锦
    学习bootstrap3
    开发一个响应式的静态网站---实战
  • 原文地址:https://www.cnblogs.com/Lemonades/p/11621792.html
Copyright © 2020-2023  润新知