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

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

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

相关推荐
火烧屁屁啦6 分钟前
【JavaEE进阶】初始Spring Web MVC
java·spring·java-ee
w_312345420 分钟前
自定义一个maven骨架 | 最佳实践
java·maven·intellij-idea
岁岁岁平安23 分钟前
spring学习(spring-DI(字符串或对象引用注入、集合注入)(XML配置))
java·学习·spring·依赖注入·集合注入·基本数据类型注入·引用数据类型注入
武昌库里写JAVA26 分钟前
Java成长之路(一)--SpringBoot基础学习--SpringBoot代码测试
java·开发语言·spring boot·学习·课程设计
Q_192849990633 分钟前
基于Spring Boot的九州美食城商户一体化系统
java·spring boot·后端
Q_192849990637 分钟前
基于Spring Boot的营销项目系统
spring boot
张国荣家的弟弟1 小时前
【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
java·jar·bi
ZSYP-S1 小时前
Day 15:Spring 框架基础
java·开发语言·数据结构·后端·spring
yuanbenshidiaos1 小时前
C++----------函数的调用机制
java·c++·算法
是小崔啊1 小时前
开源轮子 - EasyExcel01(核心api)
java·开发语言·开源·excel·阿里巴巴