【SpringBoot】配置文件

news/2024/12/17 7:43:35/

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

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

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


目录

1. properties文件

1.1 properties 的基础语法

1.2 读取properties文件

1.3 设置热部署

1.4 properties 缺点

2. yml文件

2.1 yml 语法格式

2.2 读取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

先在 Settings Plugins 中下载 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文件

yml  YAML 的缩写,全称为“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.properties 或 application.yml 中的配置属性映射到Java类的属性上,实现配置的自动装配和验证‌

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

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

@ConfigurationProperties("user")
@Component
public class User {int id;int age;@Overridepublic 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 {@Autowiredprivate User user;@PostConstructpublic void showUser() {System.out.println(user);}
}

运行项目后: 

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


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


http://www.ppmy.cn/news/1555807.html

相关文章

简单的Java小项目

学生选课系统 在控制台输入输出信息&#xff1a; 在eclipse上面的超级简单文件结构&#xff1a; Main.java package experiment_4;import java.util.*; import java.io.*;public class Main {public static List<Course> courseList new ArrayList<>();publi…

【Linux 进程间的通信】匿名管道

匿名管道是UNIX系统进程间通信&#xff08;IPC&#xff09;的一种基本形式&#xff0c;它允许具有血缘关系的进程之间进行数据传输。在Linux环境下&#xff0c;匿名管道是通过内核中的缓冲区实现的&#xff0c;这个缓冲区的大小是有限的&#xff0c;通常由操作系统决定。匿名管…

如何持续优化呼叫中心大模型呼出机器人的性能?

如何持续优化呼叫中心大模型呼出机器人的性能&#xff1f; 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/lihaiya/freeipcc 持续优化呼叫中心大模型呼出机器人的性能是一个复杂而持续的过程&#xff0c;涉及多个层面的策略和措…

[图形渲染]【Unity】【游戏开发】Shader基础9 什么是固定管线渲染?

在图形渲染领域,**固定管线渲染(Fixed-Function Pipeline)**是一种历史悠久的渲染方法,曾是早期图形API(如OpenGL和DirectX)的核心设计思想。尽管它已经逐步被现代的可编程管线取代,但理解固定管线的概念对于学习图形渲染的演进和基础非常重要。 1. 什么是固定管线? …

STM32F407+LAN8720A +LWIP +FreeRTOS UDP通讯

STM32F407+LAN8720A +LWIP +FreeRTOS ping通 上一篇实现了LWIP ping 通 本篇实现UDP通讯 实现如下功能: 串口1空闲中断+DMA接收,收到数据用UDP发送UDP接收,收到数据用串口1发送STM32CUBEIDE配置和代码 1. 配置UARAT1的空闲中断+DMA接收 UART1接收到数据,释放信号量,在任…

【C++图论 二分图 DFS】785. 判断二分图|1624

本文涉及知识点 C图论 CDFS LeetCode785. 判断二分图 存在一个 无向图 &#xff0c;图中有 n 个节点。其中每个节点都有一个介于 0 到 n - 1 之间的唯一编号。给你一个二维数组 graph &#xff0c;其中 graph[u] 是一个节点数组&#xff0c;由节点 u 的邻接节点组成。形式上…

onlyoffice 请求代理后的地址后续请求会重定向到80端口问题

问题描述&#xff1a; onlyoffice 服务是3333本机端口和80 docker容器端口 我需要在nginx服务器上代理到86端口的/oo/路径上 问题配置如下&#xff1a; server {listen 86;location /oo/ {proxy_pass http://192.168.199.129:3333/;} }这样配置出现请求重定向到80端口现象 最后…

threejs 建筑设计(室内设计)软件 技术调研之二 墙体材质改变

运用threejs 开发 建筑设计&#xff08;室内设计&#xff09;软件 技术调研 二 墙体材质改变 在线体验地址&#xff1a;http://47.96.130.245:8080/design/index.html 实现功能&#xff1a; 左键点击开始画线&#xff0c;右键结束画线&#xff0c;画线结束后&#xff0c;生成…