Spring Boot 配置文件

配置文件作用

配置文件是保存整个项目中所有重要的数据的,比如:

  1. 数据库的连接信息
  2. 项目的启动端口
  3. 第三方系统的调用密钥等
  4. 用于发现和定位问题的普通日志和异常日志等

如果没有配置文件,那么 Spring Boot 项目就不能连接和操作数据库,甚至是不能保存可以用于排查问题的关键日志。

  1. 配置文件的信息,一般都是 key-value 的形式。
  2. 配置文件可以设置为 开发环境 和 线上环境 两个部分,在开发的时候使用 开发环境,上线的时候使用 线上环境。
  3. 可以有多个配置文件,用来表示 开发,测试,线上 环境。

配置文件的分类

  1. 系统级别的,如连接字符串,日志相关的设置,系统定义好的。
  2. 用户自定义的。

配置文件的格式

Spring Boot 的配置文件主要有两种格式“

  1. .properties
  2. .yml

这两个的功能是一样的,但是,这两个是不同时代的产物,yml 是 properties 的升级版。

配置文件一定是 application.xxx 也是约定大于配置的思想。不然就不起作用了。

指定端口

通过 server.port 来指定端口。.properties 如下:
在这里插入图片描述
运行结果如下:
在这里插入图片描述
就只能通过 9090 端口来访问了。

.yml 文件配置:

在这里插入图片描述
运行结果如下:

在这里插入图片描述

规则

  1. 一个项目当中可以存在两种配置文件,但是不建议一个项目中出现两种配置文件。
  2. 当一个项目的某个配置,出现在两种格式的配置文件当中,那么配置项会以 properties 为主。

properties

配置文件的基本语法:key=value 之间没有空格。而且一个键值对之后也不能有空格。

server.port=9090

server.port 就是系统配置,配置数据库连接:
在这里插入图片描述

缺点

properties 中有很多冗余的信息,如:
在这里插入图片描述
所以改变的时候,就可以通过 yml 来完成改进。

yml

yml 是一个可读性高,语法简洁,易于理解的配置文件。并且可以简单表达一些元素的形态,基础语法是:key: value 空格不能省略,如果是多层目录的话,就一层层往下:
在这里插入图片描述
yml 支持更多的类型,如对象,数组等类型。yml 最大的优势是跨语言。

连接数据库

如图:
在这里插入图片描述
相比较 properties,yml 的数据冗余度就很低了。

单双引号

单双引号对 yml 中文件的内容引用之后,会有不同的效果:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/user?characterEncoding=utf8&useSSL=false
    name: root
    password: sjp151

mystring: hello\nworld
mystring2: 'hello\nworld'
mystring3: "hello\nworld"

运行结果如下:
在这里插入图片描述
只有最后一个换行了,不加 引号 和 单引号的都没换行,加了双引号的换行了。

  1. 不加引号 和 加 单引号相当于是加了 转义字符。
  2. 给 双引号 也加上转义字符 mystring3: "hello\\nworld" 运行结果如下:
    在这里插入图片描述
    就可以输出原字符串了。

配置对象和取对象

在 yml 中配置一个对象:

student:
  id: 1
  name: zhangsan
  age: 18

也可以使用行内写法:

student: {id: 1,name: zhangsan,age: 18}

取对象,取对象的时候就不能用 @Value 来取了。要在对象里面添加一个注解 @ConfigurationProperties(prefix = “student”)

创建对象并加注解:

@Data
@Component
@ConfigurationProperties(prefix = "student")
public class student {
    private int id;
    private String name;
    private int age;
}

@Data 注解就包括了,Getter,Setter 等方法。

通过 @Autowird 来注入类,然后来使用:

@Controller
public class UserController {
    @Autowired
    private Student student;

    @ResponseBody
    @RequestMapping("/sayhi")
    public String sayHi() {
        return "student: " + student;
    }
}

运行结果如下:
在这里插入图片描述

配置集合和获取

类似于对象的写法:

listname: #配置文件的名称
  name: #集合的名称
    - mysql #集合的值
    - sqlserver
    - oracle

当然也能写成行内式:

listname: {name: [mysql,sqlserver,oracle]}

集合读取的时候和对象读取差不多,也是通过 @ConfigurationProperties 来读取的:

@Data
@Component
@ConfigurationProperties("listname")
public class ListName {
    private List<String> name;
}

运行代码:

@Controller
public class UserController {

    @Autowired
    private ListName listName;

    @ResponseBody
    @RequestMapping("/sayhi")
    public String sayHi() {
        return "listname: " + listName.getName();
    }
}

运行结果如下:
在这里插入图片描述

读取配置文件

使用 @Value 注解就可以读取配置文件的某一个项了,但是读取的时候一定要加 $ 符号 和 大括号:

@Controller
public class UserController {
    
    @Value("${server.port}")
    private String port;
    @ResponseBody
    @RequestMapping("/sayhi")
    public String sayHi() {
        return "Hello World  port: " + port;
    }
}

运行结果如下:
在这里插入图片描述
也可以一次读取多个,那么就需要多个 @Value,我们在 yml 当中也写入参数:
在这里插入图片描述
然后引入:

@Controller
public class UserController {

    @Value("${server.port}")
    private String port;
    @Value("${myyml.string}")
    private String myyml;
    @ResponseBody
    @RequestMapping("/sayhi")
    public String sayHi() {
        return "Hello World  port: " + port + " myyml: " + myyml;
    }
}

运行结果如下:
在这里插入图片描述

  • 11
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lockey-s

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值