Spring Boot配置文件

目录

1.配置文件的作用

2.配置文件的格式

3.properties 配置文件说明

            3.1properties 基本语法

            3.2读取配置文件

            3.3properties 的缺点

4.yml配置文件的说明

            4.1yml基本语法

            4.2读取配置文件

            4.3yml配置对象

            4.4yml配置集合


1.配置文件的作用

(1)配置包括哪些文件呢?

整个项目中所有重要的数据都是在配置文件中配置的,比如:
①数据库的连接信息(包括用户名和密码)
②项目的启动端口
③第三方系统的调用秘钥等信息
④用于发现和定位问题的普通日志和异常日志

(2)要是没有配置文件的话会出现什么问题?

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

(3)配置文件的分类:

①系统的配置文件:

比如连接字符串,比如日志的相关设置,系统定义好的。

②用户自定义的

2.配置文件的格式

①配置文件主要有两种格式:

properties

yml

注意:要是没有properties的话,就先在IDEA中下载安装一个Spring Tools,要是没有下面这个yml的话,可以参考这篇文章,就可以得以创建:

(11条消息) idea中如何创建yml文件_丶牧魂人的博客-CSDN博客_idea创建yml文件

②规则:

a.一个项目中可以同时存在这两种配置文件,但是我们不建议一个项目中出现两种配置文件。
b.当一个项目的某个配置,出现在两种格式的配置文件中时,那么配置项会以properies为主,而忽略yml中的配置

对上述结论进行演示,我们在application.properties里面将端口号设为9090,而在application.yml中将端口号设为8080,然后我们会发现这个时候,打印的是9090

3.properties 配置文件说明

properties配置文件是最早期的配置文件格式,也是创建spring boot项目默认的配置文件

            3.1properties 基本语法

①格式:

properties是以键值的形式配置的,key和value之间是以“=”进行连接的

②示例:

③注意:关于properies中文乱码问题的处理

a.打开setting设置,找到encoding

 b.将下图标识地方全部修改为utf-8,并点击确认

 c.配置新项目中的乱码问题:(找到对应位置后,重复上述a,b步骤)

d.将原来的application.properies删除掉,重新创建一个application.properi。因为之前的配置文件已经创建好了,我们才设置的文件格式,如果不删除重建的话,在这个application.properies中的话,仍然不会支持中文编码的。

这样的话我们的中文设置配置好了。 

            3.2读取配置文件

①格式:

@Value注解以及${}的格式就可以进行读取了

②注意:

一个@Value只能读取一个配置文件,要是想要读取多个的话,就需要建立多个@Value

③示例:

a.application.properties:

# 这是端口号
server.port=9090

b.test:

package com.example.demo.next;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class test {
    @Value("${server.port}")
    private String port;
    @ResponseBody//返回一个非静态页面的数据
    @RequestMapping("/Sayhi")//设置路由地址
    public String sayHi(){
        System.out.println("Hello" + port);//在控制台打印
        return "Hello,World + port:" + port;//在网页上打印
    }
}

结果显示:

            3.3properties 的缺点

因为properties的格式是key=value这种形式,因此很容易出现如下图所示的冗余的现象。

4.yml配置文件的说明

①什么是yml?

yml 是 YMAL 是缩写,它的全称 Yet Another Markup Language 翻译成中文就是“另一种标记语言”
②yml语言的特点:
可读性高,易于理解
支持更多的数据类型
跨语言使用,如golang,java,高版本python等。

            4.1yml基本语法

①格式:

key:(空格)value

注意此处的空格一定不能省略,否则程序会报错

②示例:

 

            4.2读取配置文件

yml读取配置文件和properties是一致的,都是通过@Value(${})来进行读取,演示如下:

①yml:

#端口号
server:
  port: 8080
Stirng: java

②test:

package com.example.demo.next;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class test {
    @Value("${server.port}")
    private String port;
    @ResponseBody//返回一个非静态页面的数据
    @RequestMapping("/Sayhi")//设置路由地址
    public String sayHi(){
        System.out.println("Hello" + port);//在控制台打印
        return "Hello,World + port:" + port;//在网页上打印
    }
}

            4.3yml配置对象

①我们在yml中进配置:(此处有两种不同的写法)

#第一种写法
student1:
  id: 1
  name: 张三
  age : 18

  #第二种写法
student2: {id: 2,name: 李四,age: 20}

②创建一个student类,并且加上相关属性

(注意:这个时候就不能用@Value 来读取配置中的对象了,此时要使用另⼀个注解@ConfigurationProperties来读取:)

package com.example.demo.next;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;

@Controller
@Data//这个注解为我们封装提供了getter,setter,toString等方法,我们就不用再写
@ConfigurationProperties("student2")
public class Student {
    private String name;
    private int id;
    private int age;
}

③我们进行测试上述内容:(这里用UserController来进行测试)

package com.example.demo.next;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserController {
    @Autowired
    private Student student;
    @ResponseBody//返回一个非静态页面的数据
    @RequestMapping("/sayhi")//路由地址
    public String sayHi() {
        System.out.println(student);
        return "student:" + student;
    }
}

输出结果:

            4.4yml配置集合

配置文件也可以配置 list 集合,如下所示:

①yml相关代码:

#集合
dbtypes: {name: [mysql,sqlserver,db2]}

②list相关的代码:

package com.example.demo.next;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;

import java.util.List;

@Data
@Controller
@ConfigurationProperties("dbtypes")
public class ListTest {
    private List<String> name;
}

③创建一个UserController2来进行测试:

package com.example.demo.next;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

@Controller
public class UserController2 {
    @Autowired
    private ListTest list;
    @ResponseBody//返回一个非静态页面的数据
    @RequestMapping("/list")//设置路由地址(一定要全部小写)
    public String sayHi(){
        return "list: "+ list;
}
}

另外,这里补充一个yml加“”与‘’的区别的例子:

①我们在yml中配置如下相关内容:

mystring: hello\n世界
mystring2: 'hello\n世界'
mystring3: "hello\n世界"

②我们来建一个UserController3来实现这个测试:

package com.example.demo.next;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class UserCntroller3 {
    @Value("${mystring1}")
    private String mystring1;
    @Value("${mystring2}")
    private String mystring2;
    @Value("${mystring3}")
    private String mystring3;

   @ResponseBody
    @RequestMapping("/test2")//设置路由地址
    public String sayHi(){
        System.out.println("mystring1:"+ mystring1);
        System.out.println("mystring2:"+ mystring2);
        System.out.println("mystring3:"+ mystring3);
        return null;
    }
}

③输出结果如下:

我们可以发现:当用单引号的时候,得到的内容是原来有的一模一样的内容,而用双引号得到的才是带有换行本身意义的字符。即:yml里面如果使用了双引号就会按照(原)语义执行,如果不加单、双引号,或者加了单引号,那么默认会将字符串中的特殊字符进行转义

下期将为大家介绍spring boot 日志文件相关内容~

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张洋洋~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值