zoukankan      html  css  js  c++  java
  • SpringBoot配置文件(热部署、Properties和YAML、自定义属性对象集合)

    1、热部署

      修改完代码,想让SpringBoot自动加载我们修改的内容(pom.xml添加依赖)

    <!-- spring-boot的开发工具,可以在修改代码时,不需要手动重启服务器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>

    2、 配置文件:Properties和YAML

      SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,

    就可以使用application.properties或者application.yml/application.yaml(官方推荐使用的格式)进行配置。

      SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件

    Application属性文件:按优先级排序,位置高的将覆盖位置低的

    # tomcat 端口号
    server.port=18081
    # 配置项目所在的根目录
    server.servlet.context-path=/springboot-demo02

    yml配置文件

    简介:

      YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁

    server:
      port: 8899

    冒号(:)与value之间必须有一个空格,另起一行时尽量不要用tab,推荐使用空格空行

    properties文件与yml文件之间的区别:

    • properties文件中,配置属性的方式是key=value的方式
    • yml文件中,配置属性的方式是: key: value

    application.properties的配置方式:

    server.port=8999

    yml文件的配置方式:

    server:
      port: 8899

      将yml与properties对比之后发现,yml最大的好处在于其拥有天然的树状结构,所以着手尝试将properties文件更改为yml文件,发现了几个要注意的地方:

    • 1、在properties文件中是以”.”进行分割的, 在yml中是用”:”进行分割; 
    • 2、yml的数据格式和json的格式很像,都是K-V格式,并且通过”:”进行赋值; 
    • 3、在yml中缩进一定不能使用TAB,否则会报很奇怪的错误;(缩进特么只能用空格!!!!) 
    • 4、每个k的冒号后面一定都要加一个空格; 

    在线的properties文件与yml文件的转换:https://www.toyaml.com/index.html

    yml自定义属性:

    application.yml

    user: 
       id: 1001
       username: laosan

    controller.java

    @Controller
    public class controller {
        @Value("${user.id}")
        private Integer id;
        @Value("${user.username}")
        private String usernmae;

    配置随机值

      通过${random}来产生int值,long值或者String字符串,来支持属性的随机值.

    yml中

    #随机字符串
    suke.secret=${random.value}
    #随机int
    suke.number=${random.int}
    #随机long
    suke.bignumber=${random.long}
    #10以内的随机数
    suke.number.less.than.ten=${random.int(10)}
    #12-65的随机数
    suke.number.in.range=${random.int[12,65]}

    读取使用注解:@Value( "${suke.secret}")

    属性占位符

      当application.properties里的值被使用时,它们会被存在的Environment过滤,所以你能够引用先前定义的值(比如,系统属性)

    suke.name=www.suke.com
    suke.desc=${suke.name} is a domain name

    最后suke.desc的值是: www.suke.com is a domin name

    配置绑定对象,数组

    user.java实体类:

    @Data
    @ToString
    @Component
    @ConfigurationProperties(prefix = "user")//绑定配置类中的user属性
    public class User {
        private Integer id;
        private String username;
        private Integer age;
        private Date nowtime = new Date();
        private String random;
        
        private List<Integer> list = new ArrayList<>();
        private List<User> users = new ArrayList<>();
    }

    如果@ConfigurationProperties(prefix = "user") 报警告

    //解决这个警告,我们只需要配一个依赖,点击提示自动生成
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-configuration-processor</artifactId>
       <optional>true</optional>
    </dependency>

    application.yml配置文件

    server:
     port: 8899
    
    spring:
      jackson:
        time-zone: Asia/Shanghai  //时区时间
        date-format: yyyy-MM-dd HH:mm:ss  //显示日期格式
     
      #json对属性值为null 忽略
        default-property-inclusion: NON_NULL
    user:
      id: 1002
      username: zhangsan
      age: 18
      random: ${random.value} //随机生成一个String随机数
      list:
        - 123 //集合中的第一个值
        - 234
        - 345
      users:
        - id: 1003 //对象集合中的第一个对象
          username: lisi
          age: 28
          random: ${random.value}
        - id: 1004
          username: wangwu
          age: 38
          random: ${random.value}

    测试类:

        @Autowired
        private User user;
        
        @RequestMapping("hello")
        @ResponseBody
        public User helloTest() {
            System.out.println(user);
            return user;
        }

    自定义配置文件@propertySources

      application.properties文件中,但是在一些场景下,比如某个配置项比较多时,为了方便区分,我们会分开存放

    可使用@propertySources设置数组,引入多个文件.

  • 相关阅读:
    git命令设置
    spring boot之常用注解(二)
    spring boot之入门配置(一)
    Java核心技术第四章——2.final 和 static
    Java核心技术第四章——1.封装性
    Flutter学习笔记(1)--环境安装
    Android 遍历手机应用,跳转应用市场详情页面
    Android 布局渲染流程与卡顿优化
    weex 数据绑定,动态控制组件的显示内容及样式
    weex常用属性梳理
  • 原文地址:https://www.cnblogs.com/64Byte/p/13234380.html
Copyright © 2011-2022 走看看