Spring Boot配置文件

配置文件

分为两种配置文件

properties、yml

这两配置文件的语法是不同的

他们两个可以共存,但实际开发只会用其中一种,统一

如果两个同时存在,会优先加载properties配置文件,才会加载yml配置文件。

如果两个配置文件配置了相同的内容,那么会以properties中的配置为主

properties配置文件

语法

K.V=

server.port=8081

从配置文件中读取自定义K.V值

配置文件

MyKey.key=MX

java文件

java 复制代码
//格式要求 必须是 "${}"  从配置文件获取,放入新的变量内
    @Value("${MyKey.key}")
    private String mykey;

    @RequestMapping("hi")
    public String hi(){
        return "Hi,"+mykey;
        //打印
    }

properties的优点

1.格式简单 K.V值

properties的缺点:

相同的前缀需要重复写,不够简便

编码格式默认不是UTF8 重新打开,中文会乱码

解决方案 修改默认编码格式

yml配置文件

可读性高,写法简单

支持更多数据类型 清单,散列表,标量等数据形态

支持更多的编程语言,不止支持java 还支持goland php ruby python..等等

yml默认为UTF8 重新打开 不会乱码

语法

k: v (v前面有空格 不能忘了)

单级目录

java 复制代码
MyKey: MX

多级目录

java 复制代码
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/my?characterEncoding=utf8
    name: root
    password: 123456

获取配置文件的值

yml

java 复制代码
MyKey: MX

java文件

java 复制代码
//获取yml的信息
    @Value("${MyKey}")
    private String ymlKey;

    @RequestMapping("hi")
    public String hi(){
        return "Hi,"+mykey+" port: "+prot+" ymlkey: "+ymlKey;
        //打印
    }

示例

yml

java 复制代码
myname:
  name1: xiao \n li
  name2: 'xiao \n wang'
  name3: "xiao \n qiang"

java文件

java 复制代码
@Value("${myname.name1}")
    private String name1;

    @Value("${myname.name2}")
    private String name2;

    @Value("${myname.name3}")
    private String name3;

@RequestMapping("/hi")
    public String hi(){
        System.out.println("--------------");
        System.out.println(name1);
        System.out.println("--------------");
        System.out.println(name2);
        System.out.println("--------------");
        System.out.println(name3);
        return "Hi,"+mykey+" port: "+prot+" ymlkey: "+ymlKey;
        //打印
    }

想要这个方法调用 必须到网站上刷新一次 让这个方法执行一次 才可以看到打印信息

可以看到 双引号会执行里面的特殊符号 而没加或者加单引号的 会原样打印

获取配置文件的类数据 并且存储到spring中

yml

java 复制代码
#两种写法都是可以的
#原始写法
student:
  id: 1
  name: zhangsan
  age: 18

#行内写法
student2: {id: 2,name: lisi,age: 20}

java 复制代码
@Component
@ConfigurationProperties(prefix = "student2")
//从配置文件中读取数据 配置到当前类中 并且存入Spring内
//使用@ConfigurationProperties注解时,实体类不能没有set方法, 因为@ConfigurationProperties类是通过set方法把配置文件的数据赋值给类内字段的
public class Student {
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    private int id;
    private String name;
    private int age;
}

启动类

java 复制代码
//从Spring中获取
    @Autowired
    private Student student;
    
    @RequestMapping("/student")
    public String student(){
        return "ID: "+student.getId()+" Name: "+ student.getName()+" age: "+student.getAge();
    }

获取配置文件中的集合数据

java 复制代码
#原始写法
mylist:
  dbtype:
    - list1
    - list2
    - list3

#行内写法
ulist: {name: [name1,name2,name3]}

java 复制代码
@Setter
@Getter
@ConfigurationProperties(prefix = "mylist")
//ConfigurationProperties注解是通过set方法注入的,所以dbtype必须和配置文件中的文件一致
@Component
public class mylist {
    private List dbtype;
}
java 复制代码
@Setter
@Getter
@ConfigurationProperties(prefix = "ulist")
//ConfigurationProperties注解是通过set方法注入的,所以name必须和配置文件中的文件一致
@Component
public class ulist {
    private List name;
}

启动类

java 复制代码
   @Autowired
    private mylist mylist;

    @Autowired
    private ulist ulist;
    
        @RequestMapping("/mylist")
    public String mylist(){
        return mylist.getDbtype().get(0)+" "+mylist.getDbtype().get(1)+" "+mylist.getDbtype().get(2)+" size: "+mylist.getDbtype().size();
    }

    @RequestMapping("/ulist")
    public String ulist(){
        return ulist.getName().get(0)+" "+ulist.getName().get(1)+" "+ulist.getName().get(2)+" size: "+ulist.getName().size();
    }

配置环境文件

在实际开发中会用到多种环境 在切换环境时 修改代码是比较繁琐的,所以可以创建环境文件

环境文件名必须是以**application-**开头 后续名字根据实际定

在主配置文件下,切换环境

只需要切换文件名,就可以完成切换环境

相关推荐
customer081 小时前
【开源免费】基于SpringBoot+Vue.JS体育馆管理系统(JAVA毕业设计)
java·vue.js·spring boot·后端·开源
Miketutu2 小时前
Spring MVC消息转换器
java·spring
乔冠宇2 小时前
Java手写简单Merkle树
java·区块链·merkle树
LUCIAZZZ3 小时前
简单的SQL语句的快速复习
java·数据库·sql
komo莫莫da3 小时前
寒假刷题Day19
java·开发语言
计算机-秋大田4 小时前
基于微信小程序的电子竞技信息交流平台设计与实现(LW+源码+讲解)
spring boot·后端·微信小程序·小程序·课程设计
S-X-S4 小时前
算法总结-数组/字符串
java·数据结构·算法
linwq84 小时前
设计模式学习(二)
java·学习·设计模式
桦说编程5 小时前
CompletableFuture 超时功能有大坑!使用不当直接生产事故!
java·性能优化·函数式编程·并发编程
@_@哆啦A梦5 小时前
Redis 基础命令
java·数据库·redis