springboot yml properties,springboot外部配置文件yml

  springboot yml properties,springboot外部配置文件yml

  00-1010配置文件的功能SprintBoot的配置文件(两种类型):propertiesyml读取配置文件的方法:@Value annotation读取单个配置项@ConfigurationProperties读取实体类属性VS yml摘要

  00-1010通常一个项目的一些重要信息会放在配置文件中,比如数据库的连接信息,项目的启动端口,一些第三方的密钥,记录信息的一般日志和异常日志等。

  

目录

Spring Boot的配置文件有两种主要格式:属性和。阳明海运股份有限公司

 

  两种格式的配置文件可以在一个项目中共存,但一般情况下,我们会统一格式,只使用其中一种,以降低故障率。properties是最早的SpringBoot配置文件格式,也是现在默认的配置文件格式,出现的时间比。yml。当这两个配置文件中出现相同的配置时,在。属性,然后是中的配置。yml将被处决,即.properties的优先级大于.yml.

  00-1010 spring boot项目创建后,会自动生成一个配置文件,其中的信息将以键值对.的形式存储

  #配置项目信息# key=valueserver . port=8080 spring . data source . URL=JDBC : MySQL 3360//127 . 0 . 0 . 1:3306/testdb?character encoding=utf8 spring . data source . username=rootspring . data source . password=root如果我们想在这个文件中配置一些信息,我们可以按照键值格式定义一个任意名称的键。

  在缺点:,中设置同一个对象的多个属性比较麻烦,需要重复多次,并且存在冗余的配置项。如下,当我们想要设置关于同一对象的大量信息时,我们需要多次重复这些信息:

  Yml很好的解决了这个问题。

  

配置文件的作用

yml是YMAL的缩写,它的全名是另一种标记语言,另一种标记语言. YMAL是一种可读的,易于理解的格式,用于表示数据序列化。YMAL可以跨语言使用,不仅在Java中,在Go和python中也可以使用。

 

  1.语法格式:

  Key: value表示键值关系,冒号后面必须加一个空格。当执行区分大小写的缩进时,不允许使用tab键。只能用空格左对齐的数据列表示相同级别的松散表示。java是用hump命名的,可以用原来的名字或者-代替正确映射。比如java中的名字是lastName,yml中的lastName或last name可以映射到。

  2.键值关系

  #通常写:Student : ID : 1 Name : sheets of three,age: 20#内联写Student 3360 {ID : 1,Name 3360 sheets of three,age: 20}yml,默认情况下不需要在字符串中添加单引号或双引号。字符串中的使用双引号:特殊字符不会被转义,会作为自己想要表达的意思:比如name:“张三n 23”,会输出:张三换行符23使用单引号:特殊字符会被转义,特殊字符会失去特殊功能,变成普通字符。

  在配置文件中,它以键值对的形式存储信息。如果您自己配置信息,您可以以键值的格式定义任何键的名称。

  使用YML连接数据库:

  sping:数据源: URL : JDBC : MySQL ://127 . 0 . 0 . 033603306/dbname?characterEncoding=tuf8用户名:根密码:根表示常用的字面量:

  #普通字面意思:张三

  : 18#布尔类型flag: true#日期date: 2022/04/15# 同一个对象的多个属性people: name: lisi age: 20# 数组# 用 -表示数组中的一个元素pets: - cat - dog - pig# 行内写法petss: [dog,cat,pig]# list对象、set对象、数组对象students: - name: zhangsan age: 22 - name: lisi age: 20 - {name: wangwu,age: 18}

 

  

读取配置文件的方法:

 

  

@Value注解读取单个配置项

如果我们想要主动的读取配置文件中的信息,可以使用注解@Value。

 

  使用格式:

  

 @Value("${server.port}") private String port;

在属性前加上@Value注解,后面的括号写入要读取的配置中哪个key,比如读取下面的server.port,注意格式:双引号+${}

 

  

# 配置项目端口 server.port=8080

在测试类中得到这个值并进行打印:

 

  

package com.example.demo;import Controller.TestReadYml;import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class DemoApplication implements InitializingBean { @Value("${server.port}") private String port; public static void main(String[] args) { SpringApplication.run(DemoApplication.class,args); } @Override public void afterPropertiesSet() throws Exception { System.out.println(" "); System.out.println("读取到信息:"+port); System.out.println(" "); }}

输入:

 

  

 

  

 

  

@ConfigurationProperties读取实体类

1.将配置文件中的一组对象映射到实体类上:

 

  使用格式:

  

@Component //spring 启动时直接将配置文件映射到当前类属性上@ConfigurationProperties("student") //student是在配置好的key

举例:在yml配置文件中,我们创建一个student对象:

 

  

 student: id: 1 name: 张三 age: 20

将这个对象映射到Student类中,也就是从配置文件里读取到类中,

 

  

package model;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component //spring 启动时直接将配置文件映射到当前类属性上@ConfigurationProperties("student")public class Student { 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; }}

2.使用注入的方式将对象注入到一个类中

 

  在启动类中注入Student类进行使用:

  

package com.example.demo;import com.example.demo.model.Student;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;@SpringBootApplication@Componentpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class,args); } //属性注入 @Autowired private Student student; @PostConstruct private void postConstruct(){ System.out.println("Read Yml:"+student); }}

输出:

 

  

Read Yml:Student{id=1, name='张三', age=20}

 

  

注意包路径配置的问题!!!启动类和要注入的类包必须放在同级目录下,否则读取不到,会显示启动失败Application failed to start.

 

  

 

  

 

  

properties VS yml 总结

yml语法更简洁,可以解决数据冗余问题yml跨语言的通用性更好,它不支持java语言还支持golang 和pythonyml 支持更多的数据类型yml格式的配置文件在写的时候更容易出错(冒号后面需要加一个空格),而properties虽然写法更复杂但是不容易出错。yml虽然可以和properties共存,但一个项目中最好统一格式,只用其中的一个。到此这篇关于SpringBoot配置文件properties和yml的实现的文章就介绍到这了,更多相关SpringBoot配置文件properties和yml内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!

 

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: