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

来源:互联网 发布:树莓派网络配置 编辑:程序博客网 时间:2024/05/22 04:44

配置文件和多环境配置

今天 就通过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=LYWlyw.age=22lyw.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=LYWlyw.age=22lyw.desc=${lyw.name} is a cool boy

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

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

当然 这个可以忽略的 

项目呢就是这样的 

补上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;@RequestMappingpublic Map<String,Object> index(){Map<String,Object> map = new HashMap<>();map.put("Name", name);map.put("Age", age);map.put("Desc", desc);map.put("Date", new Date());return map;}}
可以看到 我只是简单的返回了一下 map

 运行的结果:

上面 结果可以看到。。。

这里 日期格式 已经通过 

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

进行了格式化。。。
我们在说说 多环境。。。。多环境就是比如在开发过程中 测试过程 和发布过程 配置是不同的 这里可以很方便的去管理
首先 修改 刚才的 src/main/resource下的 applications
spring.profiles.active=testlyw.name=LYWlyw.age=22lyw.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
然后运行 查看结果:
上面 就说完了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/Chongqinglyw:   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下是:
 
如果是 多环境配置 需要 通过"  --- " 进行分割 

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