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

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

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

相关推荐
吾爱星辰2 分钟前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
哎呦没1 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
编程、小哥哥1 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
IT学长编程2 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
莹雨潇潇2 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
杨哥带你写代码3 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
郭二哈3 小时前
C++——模板进阶、继承
java·服务器·c++
A尘埃3 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23073 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端
沉登c3 小时前
幂等性接口实现
java·rpc