0


【Spring】探秘 Spring Boot 配置文件:藏在代码背后的 “魔法配方”,一键激活项目超能力

前言

🌟🌟本期讲解关于Spring IOC&DI的详细介绍~~~

🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客

**🔥 你的点赞就是小编不断更新的最大动力 **

🎆那么废话不多说直接开整吧~~

📚️1.配置文件的作用

计算机上有数以千计的配置⽂件, 我们使⽤的绝⼤多数软件, ⽐如浏览器, 微信, Idea, 甚⾄电脑, ⼿机, 都离不开配置⽂件. 我们可能永远不会直接与其中的⼤部分⽂件打交道,但它们确实以不同的形式散落在我们的计算机上, ⽐如C:\Users, C:\Windows⽂件夹, 以及各种 *.config, *.xml ⽂件

配置文件:

配置⽂件主要是为了解决硬编码带来的问题, 把可能会发⽣改变的信息, 放在⼀个集中的地⽅, 当我们启动某个程序时, 应⽤程序从配置⽂件中读取数据, 并加载运⾏

其实,可以发现配置配置,可以想象成我们使用idea之前要进行环境的配置,其实我们在使用idea时,并没有和这些文件打交道,但是这些环境的配置在我们使用idea时默默的发挥作用;

1.1Spring Boot配置文件

SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的.

很多项⽬或者框架的配置信息也放在配置⽂件中, ⽐如:
• 项⽬的启动端⼝
• 数据库的连接信息(包含⽤⼾名和密码的设置)
• 第三⽅系统的调⽤密钥等信息
• ⽤于发现和定位问题的普通⽇志和异常⽇志等.

项目的启动端口,由于springboot内置了Tomcat的服务器,默认的端口是8080,但是如果8080端口被占用后,就要重新配置这里的服务器端口;

📚️2.配置文件的快速入手

在idea中springboot项目中就存在这里的配置文件的操作项目:

注意:这里默认的就是properties,小编这里就是yml,后面小编会讲到

接下来我们直接改变这里的服务器端口号为:9090

代码如下:

server.port=9090

这里的意思就是:此时的端口号为9090,此时我们就直接访问进行验证;

访问的URL就是:http://127.0.0.1:8080/login.html;

可以看到此时就是无法进行8080端口服务器的访问了,那么此时我们将8080改成为9090,此时的界面如下:

可以看到此时就是拿到了我们这里的界面,可以发现此时配置文件就可以改变程序的某些配置,例如端口号,以及其他的对象这类的,后面有讲;

📚️3.配置文件的格式

Spring Boot 配置⽂件有以下三种:

• application.properties
• application.yml
• application.yaml

解释:yml 为yaml的简写, 实际开发中出现频率最⾼. yaml 和yml 的使⽤⽅式⼀样, 这里只讲yml⽂件的使⽤

当应⽤程序启动时, Spring Boot会⾃动从classpath路径找到并加载application.properties 和 application.yaml 或者 application.yml 文件

以下就是两种配置文件的格式项目文件

注意:

  1. 理论上讲 .properties 和 .yml 可以并存在于⼀个项⽬中,当 .properties 和 .yml并存时,两个配置都会加载. 如果配置⽂件内容有冲突, 则以 .properties 为主, 也就是.properties 优先级更⾼.
  2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种
    统⼀的配置⽂件格式,这样可以更好的维护(降低故障率

当然实践出真知,此时约定两者的服务器端口号:

//application.properties

server.port=8080

//application.yml

server:
   port: 9090

那么此时我们访问9090,可以发现此时的结果如下:

哦豁,此时又是不可以进行访问了,那么接下来就是使用8080来进行操作,毋庸置疑这里的8080端口的服务器是可以与浏览器进行连接的,小编就不再进行演示了;

📚️4.properties 配置⽂件说明

4.1properties的基本语法

properties 是以键值的形式配置的,key 和 value 之间是以"="连接的,如:


# 配置项⽬端⼝号
server.port=8080
#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?
characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

可以发现,每个单词的连接就是“ . ”,然后key与value之间的连接就是“ = ”;

4.2配置文件的读取

这里我们可以在代码中读取到配置文件;可以使⽤ @Value 注解来实现。@Value 注解使⽤" ${} "的格式读取;

代码如下:

此时我们设置一个需要重配置文件中拿到的数据:

server.port=8080

school.study.id=1207

此时就是我们所规定的配置文件(这里的配置文件是自己定义的),我们就可以拿到这里的自己配置的文件的数据了;

@RestController
@RequestMapping("/test")
public class test {

    @Value("${school.study.id}")
    Integer num;

    @RequestMapping("id")
    public String getNum(){
        return "拿到的值"+num;
    }

}

此时就是通过value拿到这里的值,然后进行返回,进行浏览器显示:

4.3properties的缺点

properties 配置是以 key-value 的形式配置的,如下图所⽰:

缺点:

从上述配置key看出,properties 配置⽂件中会有很多的冗余的信息

📚️5.yml配置文件说明

yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语⾔.
我们先来学习yml的语法

5.1yml基础语法

yml 是树形结构的配置⽂件,它的基础语法是"key: value".key 和 value 之间使⽤英⽂冒号加空格的⽅式组成,空格不可省略基础语法如下:

spring:
  application:
    name: Spring-book
server:
  port: 9090
student:
  name: lisi
  id: 0829
  age: 19

那么这里进行数据库的连接如下所示:

spring:
 datasource:
 url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false
 username: root
 password: root

5.2yml配置文件的读取

5.2.1配置不同类型的数据

在yml中配置不同类型的数据的具体格式如下所示:

# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
# 浮点数
float.value: 3.14159
# Null,~代表null
null.value: ~
# "" 空字符串
#, 直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来
empty.value:''

注意:空字符串后面啥都不用加,此时这里加上' '主要是为了方便我们这里进项观察

5.2.2配置对象的读取

这里和上面一样,在读取数据的时候需要的就是@value注解进行操作,但是这是只是一种情况,引用的方式和上面properties的方式一致,这里小编就不再进行演示了,那么对象的获取就是另一种注解:@ConfigurationProperties

这里的yml配置文件的代码如下所示:

student:
  name: lisi
  id: 0829
  age: 19

那么我们如何获取到配置文件中的数据呢?

具体的代码如下所示:

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

注意:

这里小编的使用了lombok依赖中的@data,来自动实现get与set,tostring等等的重写;

使用component将这里的对象交给spring进行管理

最后使用@ConfigurationProperties来进行配置文件中对象的获取;

最后演示代码如下:

@RestController
@RequestMapping("/test")
public class test{
    @Autowired
    private StudentInfo studentInfo;

    @RequestMapping("/student")
    public String getStudent(){
        return "获取到的对象值:"+studentInfo;
    }
}

解释:这里就是通过Autowired来进行对象的引入的操作的;最后使用路由映射来进行对象的打印的操作;

最终的效果如下所示:

此时我们可以发现已经拿到了这里的对象里各个属性的值;

5.2.3配置列表的读取

这里的yml的配置文件的代码如下所示:

dbtypes:
  name:
    - hello
    - java
    - nihao

注意:在每个列表的成员描述中“ - ”与每个值之间必须存在空格;

那么此时我们的代码如下所示:

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

解释:

@Data负责重写,列表的名称要和yml配置文件的一致

@component负责将这个对象交给spring管理

@configurationProperties负责获取到配置文件中列表的值

那么展示的代码如下:

 @Autowired
    private DbtypesInfo dbtypes;

    @RequestMapping("/dbtypes")
    public String getDbtypes(){
        return "获取到的列表值:"+ dbtypes.toString();
    }

解释:这里就是通过Autowired来进行对象的引入的操作的;最后使用路由映射来进行对象的打印的操作;

最后的结果如下:

5.2.4配置Map的读取

配置文件yml的写法如下:

maptypes:
  map:
    string1: zhangsan
    string2: lisi
    string3: wangwu

这里就是map的配置文件的写法

那么接下来就是获取这里的配置文件:

@Data
@Component
@ConfigurationProperties("maptypes")
public class MapInfo {
    private Map<String,String> map;
}

解释:

Data负责重写,map的名称要和yml配置文件的一致

@component负责将这个对象交给spring管理

@configurationProperties负责获取到配置文件中map的值

此时展示的代码如下:

  @Autowired
    private MapInfo mapInfo;

    @RequestMapping("maptypes")
    public String getMaptype(){
        return "获取到的map:"+ mapInfo.toString();
    }

最终的结果展示就是如下:

5.3yml的优缺点

优点:

  1. 可读性⾼,写法简单, 易于理解

  2. ⽀持更多的数据类型, 可以简单表达对象, 数组, List,Map等数据形态

  3. ⽀持更多的编程语⾔, 不⽌是Java中可以使⽤, 在Golang, Python, Ruby, JavaScript中也可以使⽤

缺点:

  1. 不适合写复杂的配置⽂件

  2. 有比较严格的格式要求,例如对于空格这个是必不可少的

📚️6.总结

本期小编主要讲解了关于Spring Boot的配置文件,如何进行快速入手,以及配置文件的格式是哪几种,关于properties格式的配置文件和yml格式的配置文件都做了比较详细的分析;

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

** 😊😊 * 期待你的关注~~~***


本文转载自: https://blog.csdn.net/GGBond778/article/details/144310292
版权归原作者 GGBondlctrl 所有, 如有侵权,请联系我们删除。

“【Spring】探秘 Spring Boot 配置文件:藏在代码背后的 “魔法配方”,一键激活项目超能力”的评论:

还没有评论