Spring Boot配置文件

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Spring Boot配置文件

🐷上期遗留问题:约定大于配置:


所有要存放在容器中的类必须要放到和启动类同一个目录或者启动类子目录的类,否则不能运行


🥫1.配置文件作用


项目的所有的重要的文件都是在配置文件中配置的

比如数据库的连接信息,以及日志文件

如果没有配置文件,Spring Boot项目就不能连接和操作数据库,不能保存日志,所以配置文件非常重要


🥫2.配置文件格式


1.properties

2.yml


🥫3.properties配置文件介绍

6fde3d8ef5a442d2b201ae9816a85f7e.png


properties是Spring Boot项目默认的配置文件,yml是新的款式,下面我们来分别介绍一下


1.properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项

⽬中时,如果配置⽂件中出现了同样的配置,那么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息

举个例子


88df26adba8a44bda7adb6fa20d95c79.png

dd0d97547dbe4db59f1a10c16f779de3.png

运行结果

2. properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配

置⽂件格式


🍧3.1properties基本语法


properties是键值对的形式进行配置的,key和value用=连接

配置文件用#表示注释

这里来说一下配置文件里面的配置类型分类

1.系统配置项 给系统(框架)使用

2.用户自定义配置(开发者自己使用)

开始讲解之前我们来做一下热部署,什么是热部署?

热部署就是不用手动重启项目就能自动启动项目


我们之前在创建项目的时候已经添加了spring-dev-tool依赖,那么就做下一步.在ideasettings设置里面找到


e4be924bdf704bd0826ea1ff2adc313f.png

50474ab493244e8ea62389aeb40cc481.png

然后打开

进行一样的步骤.也就是为当前项目配置,也为新项目配置


🍧3.2 读取配置文件


1.使用@Value注解

3cab0c82b1344e8ea2ca8b7fd876f6e1.png

我们来读取一下配置文件下的用户自定义配置


package com.example.demo;
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;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-01
 * Time: 9:43
 */
@Controller
@ResponseBody
public class TestController {
    //从配置项读取配置
    @Value("${success.path}")
    //赋值给一个变量
    private String way;
    @RequestMapping("/sayhi")
    public String sayHi(){
        return "hello ,world"+way;
    }
}


注解里面记得加${},才能当做是key,

运行项目

🍧3.3 properties优缺点


我们来拿配置数据库举例子


# MySQL 配置项
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/myblog
spring.datasource.username=root
spring.datasource.password=12345678
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

缺点:spring.datasource是不可以删掉的,写起来就比较麻烦冗余

优点:语法简单,适合初学者


🥫4.yml配置文件介绍


🍧4.1 yml基本语法


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

如果少了一个空格,

这里可以看到,稍有不慎就会错误


🍧4.2 yml优缺点


先来看yml格式的数据库配置


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


优点:


1.易读性强,缩进语法使其更加易于理解;支持注释,能够让文件更易于维护;

2.可以表示不同的数据类型,如字符串、整数、浮点数、列表、字典等;

3.可以轻松地与各种编程语言集成,例如Python、Java、Ruby等;

4.与XML、JSON等格式相比,文件体积小,易于传输和处理。


缺点:


1.对数据结构的描述有时可能不够明确,可能需要更多的文档来澄清数据类型的定义;

2.某些语言可能不支持YML文件格式,需要使用第三方库或工具进行转换;

3.没有标准的YML文件格式规范,可能存在一些语法差异和不兼容。 总的来说,YML格式在某些情况下非常有用和方便,但也有一些限制和约束


🍧4.3yml使用


🧊4.3.1yml配置不同数据类型


# 字符串
string.value: Hello
# 布尔值,true或false
boolean.value: true
boolean.value1: false
# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法
# Null,~代表null
null.value: ~


写一个空值的例子


🧊4.3.2配置对象


yml还可以定义一个对象


#自定义对象
myobj:
  id: 85
  name: 王一博
  age: 25


🧊4.3.3 yml配置读取


来配置读取对象的某一个属性

就拿上面的举例子


package com.example.demo;
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;
import javax.annotation.PostConstruct;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-01
 * Time: 16:34
 */
@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {
    @Value("${myobj.name}")
    private String name1;
    @PostConstruct
    public void doPost(){
        System.out.println(name1);
    }
}

71301e9dfd894ff7a4ff8fdce623dcf3.png

打印成功了!

读取该对象

新建一个类


package com.example.demo.model;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-01
 * Time: 16:46
 */
@ConfigurationProperties("myobj")
@Component
public class person {
    private int id;
    private String name;
    private int age;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {
    @Autowired private person p;
    @PostConstruct
    public void doPost(){
        System.out.println(p.toString());
    }
}

ecd7041b3def459984a911ab498c5b1d.png

70626858493544da9d4ca2e186dea818.png

看一下这两个注解

现在不使用@Value了

使⽤注解@ConfigurationProperties 来读取配置文件

加五大注解的其中之一的目的是让该类随着springBoot项目的启动而注入,然后才能让配置文件的信息设置到该类中,运行结果已经粘贴在上面了


🧊4.3.4 配置集合

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

yml格式


 dbinformation:
   name:
    - mysql
    - sqlserver
    - db2
#行内写法
dbinformation: {name: [mysql,sqlserver,db2]}


配置文件读取,和对象的读取类似

新建一个类


package com.example.demo.model;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-08-01
 * Time: 17:24
 */
@ConfigurationProperties("dbinformation")
@Component
@Data
public class User {
    private List<String> name;
}
@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {
    3 @Autowired
    private User user;
    @PostConstruct
    public void doPost(){
        System.out.println(user.toString());
    }
}

运行看结果



🥫5.properties VS yml


properties和yml都是用于配置文件的格式,在Java应用程序中都有广泛的应用。它们的主要区别如下:


1691221937928.png

🥫6.查看系统配置项


这个是spring官网的资料,有需要的铁铁可以看看

https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html


🥫7.设置不同环境的配置⽂件


创建不同环境的配置⽂件:

application-dev.properties

application-prod.properties

application-test.properties


server.port=8888

只有横杠后面的才能改,其余不能改,这个也是约定大于配置思想的体现

在 application.properties 中设置运⾏环境

# 指定配置文件的运行环境
spring.profiles.active=test



设置成功了.其余的就不写了,写法一样

今天的讲解就到这里,我们下期再见了,886


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
Java Spring
Spring boot 运行服务jar外配置配置文件方式总结
Spring boot 运行服务jar外配置配置文件方式总结
488 0
|
8天前
|
消息中间件 NoSQL 安全
(转)Spring Boot加载 不同位置的 application.properties配置文件顺序规则
这篇文章介绍了Spring Boot加载配置文件的顺序规则,包括不同位置的application.properties文件的加载优先级,以及如何通过命令行参数或环境变量来指定配置文件的名称和位置。
|
2月前
|
Java Spring 传感器
AI 浪潮席卷,Spring 框架配置文件管理与环境感知,为软件稳定护航,你还在等什么?
【8月更文挑战第31天】在软件开发中,配置文件管理至关重要。Spring框架提供强大支持,便于应对不同环境需求,如电商项目的开发、测试与生产环境。它支持多种格式的配置文件(如properties和YAML),并能根据环境加载不同配置,如数据库连接信息。通过`@Profile`注解可指定特定环境下的配置生效,同时支持通过命令行参数或环境变量覆盖配置值,确保应用稳定性和可靠性。
41 0
|
2月前
|
XML Java 数据库连接
深入解析 Spring 配置文件:从基础到高级
【8月更文挑战第3天】Spring配置文件是构建与管理Spring应用的核心,它涵盖了从基础到高级的各种配置技巧。基础配置采用`.xml`格式定义Bean及其依赖;中级配置包括设置Bean作用域及引入属性文件;高级配置则涉及AOP、事务管理和与其他框架的整合。熟练掌握这些配置能帮助开发者构建出更为灵活且易维护的应用系统。
|
3月前
|
存储 安全 Java
Spring Boot中的配置文件加密
Spring Boot中的配置文件加密
|
5月前
|
Java 数据库连接 API
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
【Spring】1、Spring 框架的基本使用【读取配置文件、IoC、依赖注入的几种方式、FactoryBean】
87 0
|
4月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
41 1
|
5月前
|
Java 容器 Spring
Spring的加载配置文件、容器和获取bean的方式
Spring的加载配置文件、容器和获取bean的方式
48 3
Spring的加载配置文件、容器和获取bean的方式
|
3月前
|
Java Spring
解析Spring Boot中的配置文件与外部化配置
解析Spring Boot中的配置文件与外部化配置
|
3月前
|
存储 Java Spring
Spring Boot中的应用配置文件管理
Spring Boot中的应用配置文件管理
下一篇
无影云桌面