SpringBoot-学习-5-properties和yaml配置文件


前言

上一篇我们简单了解了全局配置文件的一些基本信息,加下来我们主要针对properties和yaml两种配置文件的具体用法进行一下深入的学习


一、application.properties

1.生成和使用

生成:使用Spring Initializr方式构建Spring Boot项目时,会在resource目录下自动生成一个空的
application.properties文件
加载:Spring Boot项目启动时会自动加载application.properties文件,然后给对应类的对应属性进行赋值

我们可以在application.properties文件中定义Spring Boot项目的相关属性,当然,这些相关属性可以
是系统属性、环境变量、命令参数等信息,也可以是自定义配置文件名称和位置

server.port=8081
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.config.name=application

自定义的参数肯定是我们自己定义自己接收,那么一些系统属性、环境变量、命令参数怎么定义又怎么生效呢?
我们用Tomcat的属性来距离看下

2.Tomcat的属性位置

上面我们举了个例子,修改或者定义服务的启动端口号,那么有两个问题:
1、类似端口号这种服务的一些配置有哪些?
2、配置的字段名叫什么?配置的值保存在哪里?

我们一起来看一下
首先我们找到spring-boot-autoconfigure,打开spring.factories
在这里插入图片描述
然后找到在这里插入图片描述
里面有一个
在这里插入图片描述
我们进去看一下
在这里插入图片描述
这一句是重点,我们可以看到这里使用了EnableConfigurationProperties注解引入了ServerProperties.class

@EnableConfigurationProperties({ServerProperties.class})

那么就是它了,我们来看一下,都有哪些属性,以及是怎么配置生效的
在这里插入图片描述
在这里插入图片描述
好了,通过上面的这些截图我们就可以知道了:
1、类似端口号这种服务的一些配置有哪些?
2、配置的字段名叫什么?配置的值保存在哪里?
都在这个ServerProperties类里面,至于配置key的格式也很明显,就是server.字段名,配置的值都会给这个类进行赋值,使用的就是set的方式

3.自定义属性并生效

上面我们举了一个例子来看系统的属性配置修改,这里我们通过一个案例来看一下自定义配置属性的具体使用
预先准备了两个实体类文件,后续会演示将application.properties配置文件中的自定义配置属性注入 到Person实体类的对应属性中

public class Pet {
	private String type;
	private String name;
	// 省略属性getXX()和setXX()方法 // 省略toString()方法
}
@Component //用于将Person类作为Bean注入到Spring容器中
@ConfigurationProperties(prefix = "person") //将配置文件中以person开头的属性注入到该类 中
public class Person {
    private int id; //id 
    private String name; //名称 
    private List<String> hobby; //爱好 
    private String[] family; //家庭成员 
    private Map<String, String> map;
    private Pet pet; //宠物 
 // 省略属性getXX()和setXX()方法
// 省略toString()方法 }

**
@ConfigurationProperties(prefix = “person”)注解的作用是将配置文件中以person开头的属性值通过 setXX()方法注入到实体类对应属性中
@Component注解的作用是将当前注入属性值的Person类对象作为Bean组件放到Spring容器中,只有这样才能被@ConfigurationProperties注解进行赋值
**
我们写完两个类以后发现出现了如下的飘红:
在这里插入图片描述

什么影响呢?
我们既然已经定义好了属性类,那么接下来肯定要去application.properties文件中进行配置属性值,那么格式肯定就是如下这样的:

person.id=1
person.name=jack

但是我们发现我们写这些属性的key的时候是不会有提示的,那么怎么解决呢?
很简单,我们只需要引入下面这个注解即可:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

看下效果:
在这里插入图片描述
可以看到预览已经出来了
接下来打开项目的resources目录下的application.properties配置文件,在该配置文件中编写需要对 Person类设置的配置属性

person.id=1
person.name=jack
person.hobby=吃饭,睡觉,打豆豆
person.family=father,mother
person.map.k1=v1
person.map.k2=v2
person.pet.type=dog
person.pet.name=旺财

好了测试一下:
现引入一下junit包,测试代码如下:

@RunWith(SpringRunner.class)
@SpringBootTest
class Springboot01DemoApplicationTests {
    @Autowired
    private Person person;
    @Test
    void contextLoads() {
        System.out.println(person);
    }

}

可以看到测试方法configurationTest()运行成功,同时正确打印出了Person实体类对象。至此,说明 application.properties配置文件属性配置正确,并通过相关注解自动完成了属性注入
在这里插入图片描述
properties文件格式的配置格式就讲完了,这里有一个重点我们后边再深入学习,那就是**@ConfigurationProperties**注解
下面我们讲一下yaml格式的配置方式

二、application.yaml

1.什么是yaml文件,有什么好处

定义:YAML文件格式是Spring Boot支持的一种JSON超集文件格式,以数据为中心,比properties、xml等更
适合做配置文件
好处:
yaml和xml相比,少了一些结构化的代码,使数据更直接,一目了然
yaml相比properties文件更简洁(JSON超集文件格式,在配置比较多的情况下会更清晰)
格式:
YAML文件的扩展名可以使用.yml或者.yaml
application.yml文件使用 “key:(空格)value”格式配置属性,使用缩进控制层级关系。

2.具体怎么使用

这里我们针对不同数据类型的属性值,介绍一下YAML

(1)value值为普通数据类型(例如数字、字符串、布尔等)

当YAML配置文件中配置的属性值为普通数据类型时,可以直接配置对应的属性值,同时对于字符串类型的属性值,不需要额外添加引号,示例代码如下

server:
  port: 8080
  servlet:
    context-path: /hello

(2)value值为数组和单列集合

当YAML配置文件中配置的属性值为数组或单列集合类型时,主要有两种书写方式:缩进式写法和行内式写法
其中,缩进式写法还有两种表示形式,示例代码如下

person:
  hobby:
    - play
    - read
    - sleep

或者使用如下格式

person:
  hobby:
    play,
    read,
    sleep

上述代码中,在YAML配置文件中通过两种缩进式写法对person对象的单列集合(或数组)类型的爱好 hobby赋值为play、read和sleep。其中一种形式为“-(空格)属性值”,另一种形式为多个属性值之前 加英文逗号分隔(注意,最后一个属性值后不要加逗号)。

person:
  hobby: [play,read,sleep]

通过上述示例对比发现,YAML配置文件的行内式写法更加简明、方便。另外,包含属性值的中括 号“[]”还可以进一步省略,在进行属性赋值时,程序会自动匹配和校对

(3)value值为Map集合和对象

当YAML配置文件中配置的属性值为Map集合或对象类型时,YAML配置文件格式同样可以分为两种书写
方式:缩进式写法和行内式写法
其中,缩进式写法的示例代码如下:

person: 
	map:
		k1: v1 
		k2: v2

对应的行内式写法示例代码如下

person:
  map: {k1: v1,k2: v2}

在YAML配置文件中,配置的属性值为Map集合或对象类型时,缩进式写法的形式按照YAML文件格式编 写即可,而行内式写法的属性值要用大括号“{}”包含。

3.测试使用

接下来,在Properties配置文件演示案例基础上,通过配置application.yaml配置文件对Person对象进 行赋值,具体使用如下:
(1)在项目的resources目录下,新建一个application.yaml配置文件,在该配置文件中编写为Person 类设置的配置属性

#对实体类对象Person进行属性配置 person:
id: 1
name: lucy
hobby: [吃饭,睡觉,打豆豆] 
family: [father,mother] 
map: {k1: v1,k2: v2}
pet: {type: dog,name: 旺财}

在这里插入图片描述
可以看出,测试方法configurationTest()同样运行成功,并正确打印出了Person实体类对象。


三、补充

1.中文乱码问题解决

上面可以看到我的截图中好几个都由于中文导致了输出结果的乱码,只需要我们在pom文件中进行一下配置即可处理

<build>
   <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <!-- spring-boot:run 中文乱码解决 -->
            <configuration>
                <fork>true</fork>
                <!--增加jvm参数-->
                <jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
            </configuration>
        </plugin>
    </plugins>
</build>

2.yaml文件没有生效

我在自测的时候出现过现在生成的properties文件进行配置,然后手动新建一个yaml文件配置以后发现没有生效,问题我也解决了,这里记录一下

只需要重新刷新一下本地的maven进行重新打包就行,原因是自己手动创建的yaml文件在打包后的target文件夹下并没有或者格式不对,重新打包就好了,效果如下:
在这里插入图片描述

总结

关于properties文件和yaml文件两种配置文件的学习就先到这里,这一块我们遗留了一个知识点@ConfigurationProperties注解的详细使用和原理,我们接下来一节接着讲

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要创建一个Spring Boot项目并整合MyBatis-Plus,你可以按照以下步骤进行操作: 1. 首先,在你的项目的pom.xml文件中添加MyBatis-Plus和MySQL驱动的依赖。你可以引用和中提供的示例代码来配置pom.xml文件。这将确保你的项目具有使用MyBatis-Plus和MySQL的必要依赖。 2. 接下来,创建一个用于定义数据库连接和其他配置的配置文件。你可以在Spring Boot配置文件(application.properties或application.yaml)中添加以下配置信息: - 数据库连接配置:包括数据库的URL、用户名和密码等信息。 - MyBatis-Plus配置:你可以配置MyBatis-Plus的一些属性,比如自动填充、逻辑删除等。 你可以根据你的实际需求进行配置。 3. 然后,创建数据库表对应的实体类。你可以使用Java类来表示数据库表,并在类上使用注解来映射数据库字段和表。 4. 接下来,创建Mapper接口和Mapper.xml文件。Mapper接口用于定义数据库操作的方法,而Mapper.xml文件用于编写具体的SQL语句。你可以使用MyBatis-Plus的自动注入功能来简化这一过程。通过继承MyBatis-Plus提供的BaseMapper接口,你可以自动获得常见的CRUD操作方法。 5. 最后,编写业务逻辑代码并注入Mapper。在你的Service类中,你可以注入Mapper接口,并使用它来调用数据库操作方法。你可以根据你的实际需求编写其他业务逻辑代码。 运行你的Spring Boot项目后,你应该能够看到控制台输出一系列信息,表明Spring Boot项目成功整合了MyBatis-Plus。你可以参考中提供的示例代码来验证整合结果。 总结起来,创建Spring Boot项目并整合MyBatis-Plus的步骤包括:配置pom.xml文件、创建配置文件、定义实体类、创建Mapper接口和Mapper.xml文件、编写业务逻辑代码。你可以根据所提供的参考内容来详细了解每个步骤的具体实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值