Spring Boot 配置文件

目录

1.配置文件的作用

2.配置文件的格式

2.1 在  .properties 下简单配置一个端口号来测试一下

 2.2 在  .yml 下简单配置一个端口号来测试一下

 2.3 .properties   .yml  都同时配置不同的端口号

2.4 两种配置的规则

3. properties 配置文件说明

3.1 properties 基本语法

 3.2 读取配置文件

 3.3  properties 缺点

4. yml 配置文件说明 

4.1 yml 基本语法

 4.2 yml 使用

4.2.1 yml 配置不同的数据类型及 null 

4.2.2 配置对象

 4.2.3 配置集合

 5.总结


1.配置文件的作用

整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:
1)数据库的连接信息(包含⽤户名和密码的设置);
2)项⽬的启动端⼝;
3)第三⽅系统的调⽤秘钥等信息;
4)⽤于发现和定位问题的普通⽇志和异常⽇志等。

2.配置文件的格式

 Spring Boot 配置文件主要分为两种格式

1) .properties

2)    .yml

2.1 在  .properties 下简单配置一个端口号来测试一下

将端口号改为 8085

 通过改变后的端口号来访问获取的数据

 

 2.2 在  .yml 下简单配置一个端口号来测试一下

在配置前,先把 .properties 中配置好的端口后删除掉

在 .yml 下配置端口号为 8090

 

 2.3 .properties   .yml  都同时配置不同的端口号

.properties 端口号配置为 8085

.yml 端口号配置为 8090

启动看项目选用哪个端口

从结果来看,项目选用的是  .properties 的端口

2.4 两种配置的规则

1)理论上讲 properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项⽬中时,如果配置⽂件中出现了同样的配置,⽐如 properties 和 yml 中都配置了“server.port”,那 么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息
2) 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配 置⽂件格式,这样可以更好的维护(降低故障率)

 为配置⽂件安装提示插件

IDEA 社区版安装 Spring Assistant 插件之后,就可以正常创建 Spring Boot 项⽬了,
并且 yml 的配置 ⽂件就有提示了。但默认情况下是不⽀持 properties 格式的⽇志提示的

要使 .properties 有代码提示,就需要安装 Spring Tools 插件

3. properties 配置文件说明

properties 配置⽂件是最早期的配置⽂件格式,也是创建 Spring Boot 项⽬默认的配置⽂件。

3.1 properties 基本语法

.properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的, = 两边不需要空格,如下

因为代码结束是没有 ; 的,所以要注意后面是否多了一个空格

  配置⽂件中使⽤“#”来添加注释信息。不过 .properties 是不支持中文的,当我们把项目关闭后再打开就会乱码,变成????

这就需要我们进行配置,将下面的都设置为 UTF-8

 

 当我们设置完成之后,当前文件还是不支持中文的原因是,文件已经定型了,使用的是其它编码格式,这就需要我们手动将 aplication.properies 删除掉,重新在原来的路径下创建回来,就可以支持中文了。后面再创建的也不会有乱码的情况了

 3.2 读取配置文件

如果在项⽬中,想要主动的读取配置⽂件中的内容,可以使⽤ @Value 注解来实现。
@Value 注解使⽤“${}”的格式读取,如下代码所示:
@Controller
public class UserController {

    @Value("${server.port}") // 读取配置信息的端口号
    private String port;//将端口号赋进去

    @ResponseBody //返回一个非静态页面数据
    @RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
    public String sayHi() {

        return "hello spring boot,"+ port;
    }
}

获取结果

获取 .yml 中的配置信息也一样

@Controller
public class UserController {

   
    @Value("${inyml.string}")
    private String port;//将端口号赋进去

    @ResponseBody //返回一个非静态页面数据
    @RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
    public String sayHi() {

        return "hello spring boot,port: "+ port;
    }
}

获取多个配置信息

@Controller
public class UserController {

    @Value("${server.port}") // 读取配置信息的端口号
    private String port;//将端口号赋进去

    @Value("${inyml.string}")
    private String yml;

    @ResponseBody //返回一个非静态页面数据
    @RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
    public String sayHi() {
        //return "hello spring boot,port: "+ port; //获取单个
        return "port: "+ port + "|| yml: " + yml; //获取多个
    }
}

 

 3.3  properties 缺点

properties 配置是以 key-value 的形式配置,所以冗余信息就会很多,如连接数据库时,都要反复写 spring.datasource.

#连接数据库
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/blog_system?characterEncoding=utf8mb4&useSSL=true
spring.datasource.username=root
spring.datasource.password=123

4. yml 配置文件说明 

yml 是 YMAL 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔”。
yml 是⼀个可读性⾼,易于理解,⽤来表达数据序列化的格式。它的语法和其他⾼级语⾔类似,并且可以简单表达清单(数组)、散列表,标量等数据形态。
它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
yml 最⼤的优势是可以跨语⾔,不⽌是 Java 中可以使⽤ golang、python 都可以使⽤ yaml 作为配置⽂件。

4.1 yml 基本语法

yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒号加空格的方式组成,其中空格不可以省略掉。

 连接数据库

#连接数据库
  spring:
    datasoure:
      ure: jdbc:mysql://127.0.0.1:3306/blog_system?characterEncoding=utf8mb4&useSSL=true
      name: root
      password: 123

可以对比 .properties 配置 ,简便了很多。

字符串引号的区别

在 .yml 中进行字符串配置

mystring: hello\n世界
mystring2: 'hello\n世界'
mystring3: "hello\n世界"
@Controller
public class UserController {

    
    @Value("${mystring}")
    private String mystring;

    @Value("${mystring2}")
    private String mystring2;

    @Value("${mystring3}")
    private String mystring3;



    @ResponseBody //返回一个非静态页面数据
    @RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
    public String sayHi() {
        
        System.out.println("mystring: " + mystring);
        System.out.println("mystring2: " + mystring2);
        System.out.println("mystring3: " + mystring3);
        return "mystring: "+ mystring + "  || mystring2: " + mystring2 + "  || mystring3: " + mystring3; //获取多个
    }
}

看获取结果,在字符串中,\n 是换行,加了双引号,就会按本身表达的意思执行,如果不加或者加单引号,那么默认会将字符串中的特殊字符进行转义, \n → \\n(转义处理)

 4.2 yml 使用

4.2.1 yml 配置不同的数据类型及 null 

#字符串
string.value: hello

#布尔值
boolean.value: true
boolean.value2: false

#整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # 二进制

#浮点数
float.value: 3.14159
float.value1: 314159e-5 #科学计数法

#Null, ~ 代表null
null.value: ~

4.2.2 配置对象

两种写法,举个学生例子
student:
  id: 1
  name: yang
  age: 20

student2: {id: 1,name: yang,age: 20}
此时就不能⽤ @Value 来读取配置中的对象了,此时要使⽤另⼀个注解 @ConfigurationProperties 加五大类注解之一来进行读取,目的是在启动之前就要获取完成
//Data 注解里面get、set方法都有
@Data
@ConfigurationProperties(prefix = "student") //读取配置文件中的对象
@Component //不能省略
public class Student {
    private int id;
    private String name;
    private int age;
}

调用类

在调用类就不再是使用 @Value

而是使用 @Autowired

@Controller
public class UserController {

    @Autowired
    private Student student;


    @ResponseBody //返回一个非静态页面数据
    @RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
    public String sayHi() {
       
        return "studengt: " + student;
    }

 4.2.3 配置集合

配置文件也可以配置list 集合,或者行内写法,如下所示

#配置集合
mydb:
  name:
    -mysql
    -sqlserver
    -db2


mydb2: {name: [mysql,sqlserver,db2]}
集合的读取和对象⼀样,也是使⽤ @ConfigurationProperties 来读取的,具体实现如下:
@Component
@Data
@ConfigurationProperties(prefix = "mydb")
public class ReadList {
    private List<String> name;
}

配置和读取对于关系如下

 调用启动类


@Controller
public class UserController {

    @Autowired
    private ReadList readList;

    @ResponseBody //返回一个非静态页面数据
    @RequestMapping("/sayhi") //设置路由地址,全是小写,不能是大驼峰、小驼峰
    public String sayHi() {
        
        return "ReadList: " + readList.getName();//返回集合里面的name属性,因为集合里面设置了一个属性
    }
}

 5.总结

properties 是以 key=value 的形式配置的键值类型的配置⽂件,⽽ yml 使⽤的是类似 json 格式的树形配置⽅式进⾏配置的,yml 层级之间使⽤换⾏缩进的⽅式配置,key 和 value 之间使⽤“: ”英⽂冒号加空格的⽅式设置,并且空格不可省略。
properties 为早期并且默认的配置⽂件格式,但其配置存在⼀定的冗余数据,使⽤ yml 可以很好的解决数据冗余的问题。
yml 通⽤性更好,⽀持更多语⾔,如 Java、Go、Python 等,如果是云服务器开发,可以使⽤⼀份配置⽂件作为 Java 和 Go 的共同配置⽂件。
yml 虽然可以和 properties 共存,但⼀个项⽬中建议使⽤统⼀的配置类型⽂件。
  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Fly upward

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

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

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

打赏作者

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

抵扣说明:

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

余额充值