• Spring Boot Sample 004之spring-boot-configuration-yaml


    一、环境

    • Idea 2020.1
    • JDK 1.8
    • maven

    二、目的

    通过yaml文件配置spring boot 属性文件。

    三、步骤

    3.1、点击File -> New Project -> Spring Initializer,点击next

    3.2、在对应地方修改自己的项目信息

    3.3、选择Web依赖,选中Spring Web。可以选择Spring Boot版本,本次默认为2.2.6,点击Next

    3.4、编辑工程名和项目路径,确定后点击Finish完成

    3.5、项目结构

    四、添加测试方法

    4.1、新建UserController实体类

    package org.ouyushan.springboot.configuration.properties.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.*;
    
    import java.util.HashMap;
    
    /**
     * @Description:
     * @Author: ouyushan
     * @Email: ouyushan@hotmail.com
     * @Date: 2020/4/27 13:34
     */
    
    @RestController
    @RequestMapping("/api/user")
    public class UserController {
    
        @Value(value = "${ouyushan.secret}")
        private String secret;
    
        @Value(value = "${ouyushan.number}")
        private int number;
    
        @Value(value = "${ouyushan.desc}")
        private String desc;
    
    
        @GetMapping("/")
        public String hello() {
            return "Hello World Based On Spring-Boot";
        }
    
        // @RequestParam 简单类型的绑定
        @GetMapping("/getUser")
        public HashMap<String, Object> getUser(@RequestParam String username) {
            HashMap<String, Object> map = new HashMap<>();
            map.put("title", "hello world");
            map.put("username", username);
            map.put("secret",secret);
            map.put("number",number);
            map.put("desc",desc);
            return map;
        }
    }

    4.2、配置默认application.yaml

    在resources/application.yaml中配置以下信息:
    ouyushan:
      secret: ${random.value}
      number: ${random.int}
      name: ouyushan.org
      desc: ${ouyushan.name} is a domain name
    
    server:
      port: 7070
    
    spring:
      jackson:
        date-format: yyyy-MM-dd HH:mm:ss
        time-zone: Asia/Chongqing
    启动项目,访问
    返回:
    {
        "number":1410493656,
        "secret":"f99e177aeb5370bec930ec7159bb5df7",
        "title":"hello world",
        "username":"spring",
        "desc":"ouyushan.org is a domain name"
    }
     

    4.3、配置resources/config/application.yaml

    ouyushan:
      secret: ${random.value}
      number: ${random.int}
      name: ouyushan.org
      desc: config ${ouyushan.name} is a domain name
    
    server:
      port: 9090
    
    spring:
      jackson:
      date-format: yyyy-MM-dd HH:mm:ss
      time-zone: Asia/Chongqing

    启动项目,访问

    返回:
    {
        "number":-1333749861,
        "secret":"9e0107e2d0d1b91591a18e8165532201",
        "title":"hello world",
        "username":"spring",
        "desc":"config ouyushan.org is a domain name"
    }
    通过对比请求地址和返回结果,发现resources/config/application.yaml中的配置内容已覆盖resources/application.yaml

    五、知识点

    yaml文件优先级
    
    1. 当前目录下的一个/config子目录
    2. 当前目录
    3. 一个classpath下的/config包
    4. classpath根路径(root)
     
     yaml中: 后面有空格
     
    可通过@Value取值
    
        @Value(value = "${ouyushan.secret}")
        private String secret;
    
    
    **@ConfigurationProperties(prefix = "sample")**
    
    读取外部配置文件中sample 开始的属性,自动映射到类中的字段,并覆盖代码中的值。
     
    当同名文件存在两种格式时,先加载yaml文件再加载properties文件,会导致properties的值会覆盖yaml配置的值
  • 相关阅读:
    mysql中使用row_number()函数
    Android开发环境的搭建之(二)Android Studio的安装
    Android开发环境的搭建之(一)Java开发环境的安装
    进程与线程
    工作起始之博客搬家
    MapReduce的自制Writable分组输出及组内排序
    map端join和reduce端join的区别
    String.StartsWith 方法
    RPC和心跳机制
    MAPREDUCE中的序列化
  • 原文地址:https://www.cnblogs.com/ouyushan/p/13023906.html
Copyright © 2020-2023  润新知