• SpringBoot2核心技术-核心功能 1 配置文件



    一 配置文件

    1、文件类型

    1.1、properties

    同以前的properties用法

    1.2、yaml

    1.2.1、简介
    YAML 是 "YAML Ain't Markup Language"(YAML 不是一种标记语言)的递归缩写。
    在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言)。 
    
    非常适合用来做以数据为中心的配置文件
    
    
    
    1.2.2、基本语法
    ● key: value;kv之间有空格
    ● 大小写敏感
    ● 使用缩进表示层级关系
    ● 缩进不允许使用tab,只允许空格(IDEA用了也没事)
    ● 缩进的空格数不重要,只要相同层级的元素左对齐即可
    ● '#'表示注释
    ● 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义
        单引号会将 
     作为字符串输出   双引号会将 
     作为换行输出
        单引号会转义                 双引号不会转义 
    
    1.2.3、数据类型

    ● 字面量:单个的、不可再分的值。date、boolean、string、number、null

    k: v
    

    ● 对象:键值对的集合。map、hash、set、object

    行内写法:  k: {k1:v1,k2:v2,k3:v3}
    #或
    k: 
      k1: v1
      k2: v2
      k3: v3
    

    ● 数组:一组按次序排列的值。array、list、queue

    行内写法:  k: [v1,v2,v3]
    #或者
    k:
     - v1
     - v2
     - v3
    
    1.2.4、示例

    在boot下新建bean.Person.java 和bean.Pet.java

    @ConfigurationProperties(prefix = "person")
    @Component
    @ToString
    @Data
    public class Person {
        private String userName;
        private Boolean boss;
        private Date birth;
        private Integer age;
        private Pet pet;
        private String[] interests;
        private List<String> animal;
        private Map<String, Object> score;
        private Set<Double> salarys;
        private Map<String, List<Pet>> allPets;
    }
    
    @ToString
    @Data
    public class Pet {
    	private String name;
    	private Double weight;
    }
    

    用yaml表示以上对象
    在resources下新建 application.yml

    # yaml表示以上对象
    person:
    # 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义
    #    单引号会将 
     作为字符串输出   双引号会将 
     作为换行输出
    #    单引号会转义                 双引号不会转义
      userName: "zhangsan 
     李四"
      boss: false
      birth: 2019/12/12 20:12:33
      age: 18
      pet: 
        name: tomcat
        weight: 23.4
      interests: [篮球,游泳]
      animal: 
        - jerry
        - mario
      score:
        english: 
          first: 30
          second: 40
          third: 50
        math: [131,140,148]
        chinese: {first: 128,second: 136}
      salarys: [3999,4999.98,5999.99]
      allPets:
        sick:
          - {name: tom}
          - {name: jerry,weight: 47}
        health: [{name: mario,weight: 47}]
    

    测试
    在boot下新建 controller.helloController

    @RestController
    public class helloController {
        @Autowired
        Person person;
    
        @RequestMapping("/person")
        public Person person(){
            String userName = person.getUserName();
            System.out.println(userName);
            return person;
        }
    }
    

    若报Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
    则把pom.xml里中的redis和mybatis注释掉。此处不需要数据库

    2、配置提示

    自定义的类和配置文件绑定一般没有提示。可以通过如下配置让其有提示
    pom.xml

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <optional>true</optional>
            </dependency>
    
    
    
    
    	<build>
    		<plugins>
    			<plugin>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-maven-plugin</artifactId>
                                    <configuration>
                                        <excludes>
                                            <exclude>
                                                <groupId>org.springframework.boot</groupId>
                                                <artifactId>spring-boot-configuration-processor</artifactId>
                                            </exclude>
                                        </excludes>
                                    </configuration>
    			</plugin>
    		</plugins>
    	</build>
    
  • 相关阅读:
    Compact Framework访问内嵌资源文件
    RBAC权限设计图 [转]
    c# 中判断用户是否按下CTRL键
    分享开发soket经验 我的基于socket的持久层 [转]
    没事教宝宝画画
    界面开发(一)[转]
    Winform中多国语言窗体的设计以及.NET中资源文件的使用[转]
    我眼中的理想系统
    C# WinForm开发系列 Socket/WCF/Rometing/Web Services[转]
    基于RBAC的权限设计模型[转]
  • 原文地址:https://www.cnblogs.com/xingkongcanghai/p/14986851.html
Copyright © 2020-2023  润新知