Spring Boot配置文件

配置文件

分为两种配置文件

properties、yml

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

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

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

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

properties配置文件

语法

K.V=

server.port=8081

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

配置文件

MyKey.key=MX

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前面有空格 不能忘了)

单级目录

MyKey: MX

多级目录

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/my?characterEncoding=utf8
    name: root
    password: 123456

获取配置文件的值

yml

MyKey: MX

java文件

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

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

示例

yml

myname:
  name1: xiao \n li
  name2: 'xiao \n wang'
  name3: "xiao \n qiang"

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

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

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

@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;
}

启动类

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

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

#原始写法
mylist:
  dbtype:
    - list1
    - list2
    - list3

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

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

启动类

   @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-开头 后续名字根据实际定

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

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

相关推荐

  1. SpringBoot 配置文件

    2024-05-16 07:26:08       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-16 07:26:08       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-16 07:26:08       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-16 07:26:08       87 阅读
  4. Python语言-面向对象

    2024-05-16 07:26:08       96 阅读

热门阅读

  1. 【kotlin其它】Gson的简单用法

    2024-05-16 07:26:08       28 阅读
  2. Mac M1安装 nacos并自定义 Mysql 数据

    2024-05-16 07:26:08       32 阅读
  3. Nagle算法

    2024-05-16 07:26:08       36 阅读
  4. 多态的具体用法

    2024-05-16 07:26:08       36 阅读
  5. Golang开发:切片的两种创建方式及区别

    2024-05-16 07:26:08       30 阅读
  6. 分治算法(Divide-and-Conquer Algorithm)

    2024-05-16 07:26:08       34 阅读
  7. 软考:区分词法分析、语法分析、语义分析

    2024-05-16 07:26:08       40 阅读
  8. django 双下划线约定

    2024-05-16 07:26:08       36 阅读
  9. 爬虫部分知识点(1)

    2024-05-16 07:26:08       32 阅读
  10. 网站接入百度云防护CDN后回源率非常高原因

    2024-05-16 07:26:08       38 阅读