【SpringBoot】配置文件

Spring 项目中,我们必须自行创建 Spring 的配置文件,通常命名为 "spring-config.xml" 。但在 SpringBoot 中无需自行创建,在 SpringBoot 项目创建时就存在了即 application .properties文件。它的用处:

  • 设置项目的启动端口
  • 设置数据库连接信息
  • 发现和定位普通日志或异常日志
  • 第三方的密钥调用信息等

SpringBoot 的配置文件有两种格式即以 .properties 为后缀和以 .yml 为后缀。可分别理解为老版与新版,且两种配置文件能够共存,但 .properties后缀文件优先级较高。下面我就来讲解两种配置文件。


目录

[1. properties文件](#1. properties文件)

[1.1 properties 的基础语法](#1.1 properties 的基础语法)

[1.2 读取properties文件](#1.2 读取properties文件)

[1.3 设置热部署](#1.3 设置热部署)

[1.4 properties 缺点](#1.4 properties 缺点)

[2. yml文件](#2. yml文件)

[2.1 yml 语法格式](#2.1 yml 语法格式)

[2.2 读取yml文件](#2.2 读取yml文件)

[2.3 yml配置对象](#2.3 yml配置对象)


1. properties文件

首先,我们在创建好 SpringBoot 项目后,application.properties 文件已经存在了,我们可以在 resources 底下查看。


1.1 properties 的基础语法

properties 文件内使用的内容是以键值对的形成,键和值之间使用 **=**进行连接,注释使用 # 开头,如将端口号设置为 8081。

此时,我们在项目的 java 路径底下创建一个 TestControler 类来使用端口 8081 来运行 SpringBoot项目,代码如下:

package com.example.demo;

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

@Controller
@ResponseBody
public class TestController {
    
    @RequestMapping("/sayHi")
    public String sayHi() {
        return "Hello SpringBoot";
    }
}

运行代码并在浏览器中输入localhost:8081/sayHi 结果如下:


1.2 读取properties文件

此外,在 properties 文件中可以自定义内容,如下属内容按照键值对的形式定义即可,获取方法是使用过 @Value 注释,格式为:@Value("${路径}")

@Controller
@ResponseBody
public class TestController {

    @Value("${my.path}")
    private String path ;
    
    @RequestMapping("/sayHi")
    public String sayHi() {
        return "Hello SpringBoot" + path;
    }
}

1.3 设置热部署

当我们每次修改代码后,都需要重新启动项目才能达到效果,因此我们可以热部署一下,使项目不用重启程序也能执行。以下为设置步骤:

(1) 下载 EditStarters

先在 SettingsPlugins 中下载 EditStarters ,这样我们在 pom.xml中就能很轻松的添加一些框架和支持。

(2)添加 springboot-dev-tool 框架

pom.xml 文件中空白处右击,并点击 Generate

再点击 Edit Starters

最后按照下面步骤添加即可。

(3)启用Build project automatically 功能

(4)开启热部署


1.4 properties 缺点

当我们想使用某个功能时,很多数据会重复。如连接数据库时,下图所示:

我们发现每行都写了 spring.datasource ,因此我们可以使用 yml 文件来避免重复数据,由于 yml 文件的特定格式。


2. yml文件

ymlYAML 的缩写,全称为"YAML Ain't Markup Language ",意为"另一种标记语言"。因此,你在项目中 以 .yml 或者 .yaml 结尾都行。它的优点:

  • 可读性较高,写法简单,语法与JSON类似

  • yml支持多种数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使用空白符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。

  • yml 支持多种编程语言,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、JavaScript、Perl 中


2.1 yml 语法格式

由于 yml 是树形结构,它是以键值对的形式组成的,keyvalue 之间使用 : 号 + 空格的形式组成。

yml 连接数据库:

相比上述使用 properties文件,更为简洁但需要注意的格式不能出错。


2.2 读取yml文件

也是通过 @Value 注解来获取,语法为**@Value("${路径}")**,具体讲解在 1.2 读取properties文件 中。


2.3 yml配置对象

使用 @ConfigurationProperties注解

@ConfigurationProperties 注解在Java 中的作用‌是将配置文件中的属性绑定到Java类上,从而简化配置管理和提高可读性。它主要用于 Spring 框架中,特别是 SpringBoot 应用。通过使用 @ConfigurationProperties ,可以将 application.propertiesapplication.yml 中的配置属性映射到Java类的属性上,实现配置的自动装配和验证‌

我们在 yml 文件中可创建一个对象,如下图所示。

创建一个类 User ,并使用Configurationproperties("对象名称") 注解。并且将该类添加类注解,加类注解是为了 SpringBoot 项目启动时,被该注解的内容也能被加载。

@ConfigurationProperties("user")
@Component
public class User {
    int id;
    int age;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", age=" + age +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }



    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

再创建一个 UserController 类用来获取到 User 对象。解释 @PostConstruct注解:

@PostConstruct是Java中的一个注解,用于标注在方法上,该方法会在类的构造函数执行完毕后、其它方法执行前执行。该注解属于**javax.annotation**包,需要Java SE 5.0版本以上才支持。

常见的用途是在Spring框架中,用于执行一些初始化操作,例如初始化一些资源,加载配置文件等。

@Component
public class UserController {

    @Autowired
    private User user;

    @PostConstruct
    public void showUser() {
        System.out.println(user);
    }
}

运行项目后:

以上就是 yml 配置一个对象的流程,当然 yml还能配置集合等其他内容,感兴趣可以自行搜索资料。


今天的博客到这里就结束了,感谢各位的观看。

相关推荐
nie66688881 小时前
Springmvc跳转和传值
spring
唐骁虎1 小时前
Spring Boot 项目的默认推荐目录结构详解
java·springboot
liuyunshengsir1 小时前
crictl和ctr与docker的命令的对比
java·docker·eureka
Ttang231 小时前
Tomcat原理(5)——tomcat最终实现
java·开发语言·servlet·tomcat·intellij-idea
檀越剑指大厂1 小时前
【Docker系列】SpringBoot项目启动健康检查
spring boot·docker·容器
7 :)2 小时前
第三月(下)第六章:反射+设计模式
java·jvm·设计模式
OldGj_2 小时前
「LangChain4j入门 — JavaAI程序」
java·ai·langchain·langchain4j
就爱学编程2 小时前
重生之我在异世界学编程之C语言:深入预处理篇(下)
android·java·c语言
杰哥技术分享2 小时前
Public Key Retrieval is not allowed
java