首页 > 其他分享 >Spring Boot中配置文件介绍及其使用教程

Spring Boot中配置文件介绍及其使用教程

时间:2023-10-07 15:44:26浏览次数:33  
标签:name 配置文件 Spring Boot score address import public String

一、配置文件介绍
SpringBoot项目中,大部分配置都有默认值,但如果想替换默认配置的话,就可以使用application.properties或者application.yml或者application.yaml进行配置。SpringBoot默认会从resources目录下加载application.properties或application.yml文件。其中,application.properties文件是键值对类型的文件,之前一直在使用,所以我们不再对properties文件进行阐述。

如果我们想要查找配置文件如何覆盖SpringBoot项目的默认配置,那么可以查看下面链接:

Spring Boot Reference Documentation
https://docs.spring.io/spring-boot/docs/2.7.6/reference/htmlsingle/#appendix.application-properties.server
除了properties文件外,SpringBoot还支持YAML文件进行配置。YAML文件的扩展名为 .yml 或 .yaml ,它的基本要求如下:

大小写敏感
使用缩进代表层级关系
相同的部分只出现一次
比如使用properties文件配置tomcat端口:

server.port=8888

而使用YAML文件配置tomcat端口:

server:
port: 8888

二、配置简单数据
除了覆盖默认配置,我们还可以在YAML文件中配置其他信息以便我们在项目中使用。配置简单数据的方式如下:

语法:

数据名: 值

示例:

name: LYL

注意:value之前有一个空格

三、配置对象数据
语法:

对象:
属性名1: 属性值
属性名2: 属性值
# 或者
对象: {属性名1: 属性值,属性名2: 属性值}

示例:

student:
age: 10
female: male
address: Guangzhou
# 学生2
student2: {sex: male,age: 10,address: Guangzhou}

注意:属性名前面的空格个数不限,在yml语法中,相同缩进代表同一个级别,只要每个属性前的空格数一样即可。

四、配置集合数据
语法:

集合:
- 值1
- 值2
# 或者
集合: [值1,值2]

示例:

city1:
- Beijing
- Shanghai
- Shenzhen
- Guangzhou

# 集合中元素是对象

students:
- score: 100
name: zhangsan
age: 10
- score: 95
name: lisi
age: 25
- score: 78
name: wangwu
age: 15

user:
id: 1001
username: LYL
address:
- Beijing
- Shanghai
- Guangzhou
- Shenzhen
grades:
- subject: math
score: 90
- subject: english
score: 39

五、读取配置文件数据
我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上,用法如下:

yml文件如下:


name: zhangsan

student:
age: 10
female: male
address: Guangzhou

city1:
- Beijing
- Shanghai
- Shenzhen
- Guangzhou

students:
- score: 100
name: zhangsan
age: 10
- score: 95
name: lisi
age: 25
- score: 78
name: wangwu
age: 15

user:
id: 1001
username: LYL
address:
- Beijing
- Shanghai
- Guangzhou
- Shenzhen
grades:
- subject: math
score: 90
- subject: english
score: 39

读取配置文件:

package com.example.demo.controller;

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;

@Controller
public class YmlController1 {
@Value("${name}")
private String name;

@Value("${students[1].name}")
private String stu_name;

@Value("${city1[3]}")
private String address;

@RequestMapping("/yml1")
@ResponseBody
public String yml1(){
System.out.println(name);
System.out.println(stu_name);
System.out.println(address);
return name+" "+stu_name+" "+address;
}
}

接下来我们运行一下看看能否获得数据:

 

 

OK,控制台和网页端都是可以成功读取数据的。

不过要注意的是:@Value只能映射简单数据类型,不能将yaml文件中的对象、集合映射到属性中。

那我们应该如何映射到实体类呢,通过 @ConfigurationProperties(prefifix="对象") 可以将配置文件中的配置自动与实体进行映射,这样可以将yml文件中配置的对象属性直接映射到Bean当中。

OK,我们来新建一个实体类:Grade,因为User属性中含有该对象:

package com.example.demo.pojo;

public class Grade {

private String subject;
private int score;

public Grade(){};

public String getSubject() {
return subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public int getScore() {
return score;
}

public void setScore(int score) {
this.score = score;
}

@Override
public String toString() {
return "Grade [ " +
"subject='" + subject + '\'' +
", score=" + score +
" ]";
}
}

再来编写一个控制类读取配置文件:

package com.example.demo.controller;

import com.example.demo.pojo.Grade;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
@ConfigurationProperties(prefix = "user")
public class YmlController2 {

private int id;
private String username;
private List<String> address;
private List<Grade> grades;

@RequestMapping("/yml2")
public void yml2(){
System.out.println(id);
System.out.println(username);
System.out.println(address);
System.out.println(grades);
}

@Override
public String toString() {
return "YmlController2 [" +
"id=" + id +
", username='" + username + '\'' +
", address=" + address +
", grades=" + grades +
" ]";
}

public YmlController2() {
}

public int getId() {
return id;
}

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

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public List<String> getAddress() {
return address;
}

public void setAddress(List<String> address) {
this.address = address;
}

public List<Grade> getGrades() {
return grades;
}

public void setGrades(List<Grade> grades) {
this.grades = grades;
}
}

好了,现在我们运行看看能否获得数据:

 

OK,在控制台中成功打印了说明该注解生效,是可以使用的。

六、占位符的使用
YAML文件中可以使用 ${} 占位符,它有两个作用:

使用配置文件中的值

比如说我们使用自定义的端口,并在页面展示:配置文件如下图

 

我们再写一个控制器方法

package com.example.demo.controller;

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;

@Controller
public class YmlController3 {
@Value("${myConfig.serverPort}")
private int port;

@RequestMapping("yml3")
@ResponseBody
public String getPort(){
return "你的自定义端口为:"+port;
}
}

运行测试

 

也可以是可以成功注入的。

使用框架提供的方法

SpringBoot框架提供了一些生成随机数的方法可以在yml文件中使用:

${random.value} :生成类似uuid的随机数,没有"-"连接
${random.uuid} :生成一个uuid,有短杠连接
${random.int} :随机取整型范围内的一个值
${random.int(10)}:随机生成一个10以内的数
${random.int(100,200)}:随机生成一个100-200 范围以内的数
${random.long}:随机取长整型范围内的一个值
${random.long(100,200)}:随机生成长整型100-200范围内的一个值
比如说随机生成一个1000-9999的端口:

 

标签:name,配置文件,Spring,Boot,score,address,import,public,String
From: https://www.cnblogs.com/2002-yyz/p/17746482.html

相关文章

  • docker制作springboot镜像
    以下步骤在具有Docker环境的Linux机器上操作。把springboot-1.0.0.jar放到/usr/local/springboot目录下,并在该目录下创建Dockerfile文件,内容为:FROMopenjdk:8-jdk-alpineADDspringboot-1.0.0.jar/usr/local/springboot.jarENTRYPOINT["java","-jar","/usr/local/spring......
  • SpringCloud:Feign实现微服务之间相互请求
    文章目录......
  • 优化springboot
    在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢?1.方便微服务部署。2.方便项目启动,不需要下载Tomcat或者Jetty针对目前的容器优化,目前来说没有太多地方,需要考虑如下几个点线程数超时时间jvm优化针对上述的优化点来说,首......
  • SpringBoot注解
    一、注解(annotations)列表@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让springBoot扫描到Configuration类并把它加入到程序上下文。@Configuration等同于spring的XML配置文件;使用Java代码可以检查类型安......
  • Springboot+Vue整合(二)
    今天内容1:用Vue实现了进一步的查询,通过ID进行条件查询这个内容基本上是在之前的整合的基础上做的修改流程为:页面添加搜索框<el-table-columnalign="right"><templateslot="header"slot-scope="scope"><divstyle="display:fl......
  • BootstrapBlazor组件库,Marquee文字滚动组件
    BootstrapBlazor组件库,Marquee文字滚动组件介绍本Blazor组件依赖于BootstrapBlazor组件库。使用该组件之前需要先安装BootstrapBlazor组件库。可以通过nuget命令行安装dotnetaddpackageBootstrapBlazor--version7.x或者双击项目名称直接添加ItemGroup<ItemGroup>......
  • Bootstrap网格系统
    bootstrap框架中的网格系统就是将容器平分成12份,在使用的时候可以根据实际情况重新编译LESS/SASS源码来修改12这个数值。bootstrap框架的网格系统工作原理:1、数据行(.row)必须包含在容器(.container)中,以便其赋予合适的对齐方式和内距(padding)<divclass="container"><divclass="r......
  • SpringMVC略解
    SpringMVC是Spring框架的重要模块,是基于Java实现的轻量级WebMVC框架。其主要设计原理和实现如下:1.基于MVC架构,将请求分发到不同的组件处理。2.通过DispatcherServlet作为前端控制器,映射请求并处理响应。3.支持注解配置Controller、绑定参数等,减少配置。4.通过Hand......
  • Spring+MyBatis配置文件
    spring-config.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="h......
  • CSS与Bootstrap的关系和区别
    1.CSS是层叠样式表(CascadingStyleSheets)的缩写,是一种样式表语言,用于控制网页的视觉效果。2.Bootstrap是一个开源的前端UI框架,基于HTML、CSS和JavaScript,用于快速开发Web应用程序和网站。3.Bootstrap需要依赖CSS作为样式描述语言,包含了一系列预定义的CSS样式、布局模......