【SpringBoot教程三】:配置文件和多环境配置

配置文件和多环境配置

今天 就通过DEMO简单说说SpringBoot的配置文件 和多环境配置

配置文件的种类:


SpringBoot的配置文件 有两种 一种就是properties 文件 还有一种就是 yml文件

配置文件的生效顺序,会对值进行覆盖:

1. @TestPropertySource 注解

2. 命令行参数

3. Java系统属性(System.getProperties())

4. 操作系统环境变量

5. 只有在random.*里包含的属性会产生一个RandomValuePropertySource

6. 在打包的jar外的应用程序配置文件(application.properties,包含YML和profile变量)

7. 在打包的jar内的应用程序配置文件(application.properties,包含YML和profile变量)

8. 在@Configuration类上的@PropertySource注解

9. 默认属性(使用SpringApplication.setDefaultProperties指定)

      Application属性文件,按优先级排序,位置高的将覆盖位置低的

1. 当前目录下的一个/config子目录

2. 当前目录

3. 一个classpath下的/config包

4. classpath根路径(root)

 

这个列表是按优先级排序的(列表中位置高的将覆盖位置低的

DEMO

首先 参照之前的教程 搭建项目

创建 src/main/resources/下    application.propetis 文件

lyw.name=LYW
lyw.age=22
lyw.desc=${lyw.name} is a boy

#时间格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#时区设置
spring.jackson.time-zone=Asia/Chongqing
在src/main/resources/config/创建 application.propertis文件
lyw.name=LYW
lyw.age=22
lyw.desc=${lyw.name} is a cool boy

这里 lyw.name 是报黄线的装有 spring插件的宝贝门 可以 直接去掉黄线

【SpringBoot教程三】:配置文件和多环境配置_第1张图片

会创建一个元数据additional-spring-configuration-metadata.json

当然 这个可以忽略的 

【SpringBoot教程三】:配置文件和多环境配置_第2张图片

项目呢就是这样的 

补上Controller的代码:

package com.lyw.controller;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.fasterxml.jackson.core.sym.Name;

@RestController
@RequestMapping("/user")
public class UserController {
	
	//加载配置文件中的参数
	
	@Value(value="${lyw.name}")
	private String name;
	@Value(value="${lyw.age}")
	private int age;
	@Value(value="${lyw.desc}")
	private String desc;
	
	
	@RequestMapping
	public Map index(){
		
		Map map = new HashMap<>();
		map.put("Name", name);
		map.put("Age", age);
		map.put("Desc", desc);
		map.put("Date", new Date());
		return map;
	}
}
可以看到 我只是简单的返回了一下 map

 运行的结果:
【SpringBoot教程三】:配置文件和多环境配置_第3张图片

上面 结果可以看到。。。

这里 日期格式 已经通过 

#时间格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#时区设置
spring.jackson.time-zone=Asia/Chongqing

进行了格式化。。。
我们在说说 多环境。。。。多环境就是比如在开发过程中 测试过程 和发布过程 配置是不同的 这里可以很方便的去管理
首先 修改 刚才的 src/main/resource下的 applications
spring.profiles.active=test

lyw.name=LYW
lyw.age=22
lyw.desc=${lyw.name} is a boy

#时间格式化
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
#时区设置
spring.jackson.time-zone=Asia/Chongqing
这里 上面加了 一行 是读取对应文件的
创建 application-test.propertis
server.port=8083
创建 application-dev.propertis
server.port=8088

eg:这里名字必须对应 在 上面配置的 什么 下面 就需要添加什么文件 并且 名称为 applicatio-配置.propertis
然后运行 查看结果:
【SpringBoot教程三】:配置文件和多环境配置_第4张图片
上面 就说完了properties的配置方式。。。下面继续说yml的配置
先说说 yml和propertis的区别把:

1. Properties配置多环境,需要添加多个配置文件,YML只需要一个配件文件

2.书写格式的差异,yaml相对比较简洁,优雅

3. YML的缺点:不能通过@PropertySource注解加载。如果需要使用@PropertySource注解的方式加载值,那就要使用properties文件。

下面就放一个 yml只要把当前项目的 propertis删掉换成这个就好:
application.yml
spring:
  profiles:
    active: dev
  jackson: 
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: Asia/Chongqing


lyw: 
  name: LYW
  age: 18
  desc: ${lyw.name} is a very good Boy!
 
---
spring:
  profiles: dev
  
server:
  port: 8088
  
---
spring:
  profiles: test
  
server:
  port: 8081
  
---
spring:
  profiles: pro
  
server:
  port: 8080
 

注意几点: 
1、相同级别的键 只能有一个 
如: 
key1:
key2: 
key3: value1
key4:
key5: value2
不可以写成
key1:
key2: 
key3: value1
key1:
key4: 
key5: value2
每个键后面都要有 :分割

 子键 必须另起一行 前面 按tab键 在eclipes下是:
  【SpringBoot教程三】:配置文件和多环境配置_第5张图片
如果是 多环境配置 需要 通过"  --- " 进行分割 
【SpringBoot教程三】:配置文件和多环境配置_第6张图片

面就是对配置文件的说明 如果要DEMO 评论邮箱单独发吧!!!

你可能感兴趣的:(Spring)