SpringBoot学习(二:配置)

一.主配置类

@SpringBootApplication
标注主程序类,说明这个类是 主配置类

package org.peach.dreamework.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

在这里插入图片描述

二.配置文件

1. 配置文件(默认参数/自定义属性)
  • 约定大于配置: 项目运行的参数如端口号等,如果想改以及自定义属性,可以用配置文件来进行修改;
  • 全局配置文件: application.properties/ application.yaml
    /application.yml*文件,放在 *scr/main/resources 或者 类路径/config下面;
  • 细节: 名字必须为application,一般配置一个就好,若properties文件和yaml文件都有,则取并集,如果属性名称一样,则取properties;
# 1. 使用空格(非tab)表示层级关系
# 2. 缩进空格数目无关,但相同层级属性要左对齐
# 3. key value 形式,二者均大小写敏感
# 4. 支持三种类型:对象,数组,字面量

# 修改默认参数
server:
  port: 8089

# 自定义market对象
market:
  # 1. 字面量(数字,布尔,字符串)
  age: 18
  married: true
  # 字符串默认不加引号
  gender: woman
  # 加上“”, 特殊字符可生效, \r\n换行: 与系统有关
  job: "hunter \r\n cookie"
  # 加上‘’,特殊字符不会生效
  nation: 'China \r\n US'
  # 配置文件占位符:${}: 可以取当前配置类里面的值
  sex: ${market.gender}_is perfect
  # 先取配置文件中,如果有,则用配置文件,如果没有,则取该默认值
  address: ${market.home:New York}
  # 32位的随机String字符串
  firstNum: ${random.value}
  # 随机int
  secondNum: ${random.int}
  # 随机long
  thirdNum: ${random.long}
  # 随机10以内的正int
  fourthNum: ${random.int(10)}
  # 随机12-15的数字,包含12和15
  fivthNum: ${random.int[12,15]}
  # 2. 对象,Map
  apple:
    color: red
    price: 10
    weight: 65kg
  # 行内写法
  peach: {color: yellow, price: 20, weight: 100kg}

  # 3. 数组: - cat中间有空格
  pet:
    - cat
    - dog
    - rabbit
  # 行内写法
  flower: [rose,grass,tree]
package org.peach.dreamework.bo;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Map;
/*1 去配置文件中找market属性下所有的值*/
@ConfigurationProperties(prefix="market")
/*2. 将这个bean放在容器内,再从controller注入该类*/
@Component
@Data
public class Market {
    /*字段名称必须和配置文件中一一对应,否则取不到*/
    private int age;
    private String married;
    private String gender;
    private String job;
    private String nation;
    private String sex;
    private String address;
    private String firstNum;
    private int secondNum;
    private long thirdNum;
    private int fourthNum;
    private int fivthNum;

    private String[] pet;
    private String[] flower;
    private Apple apple;
    private Map<String,Object> peach;
}

package org.peach.dreamework.bo;
import lombok.Data;
@Data
public class Apple {
    private String color;
    private String price;
    private String weight;
}
package org.peach.dreamework.controller;
import org.peach.dreamework.bo.Market;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MarketController {
    /*先将该对象注入进来,启动即可访问一个有具体值的对象*/
    @Autowired
    private Market market;
    @RequestMapping("/marketinfo")
    public Market getInfo(){
        return market;
    }
}

三. 多环境配置文件切换

实际开发中,dev,test,prod多环境的application.yaml文件中配置的参数不同,因此SpringBoot提供了多环境切换的方式;

1.配置文件,直接启动
1.1. 提供多个application.yaml文件

yaml文件

applicaiton.yaml文件

# 先取application.yaml文件中的配置
# 如果下面有profiles属性,先取并集,再用profiles属性中的来覆盖重名,
server:
  port: 9000

# 配置文件用application-{}.yaml文件形式命名
spring:
  profiles:
    active: prod

applicaiton-dev.yaml文件

server:
  port: 9001

applicaiton-prod.yaml文件

server:
  port: 9002

properties文件

# 用法和yaml文件类似,也是提供三个配置文件
server.port=9000
spring.profiles.active=prod
1.2. yaml文件支持 多文档块
server:
  port: 9001

spring:
  profiles:
    active: prod

# --- 将一个yaml文件分为三个文档块
---
# 声明是dev环境
spring:
  profiles: dev
server:
  port: 9001

---
# 声明是prod环境
spring:
  profiles: prod
server:
  port: 9002
2. IDEA参数配置(忽略配置中active)
Program arguments参数 OR VM options虚拟机参数

在这里插入图片描述

3. 运维重新配置环境(忽略配置中active)
  1. 项目打包成jar后,运维在部署项目时候,需要切换环境时,不可能去改代码,再重新打包;
  2. 可以通过命令行的方式来配置环境;
  3. 打包-在jar包所在目录下,打开CMD窗口;
  4. java -jar profile-1.0-SNAPSHOT.jar
    –spring.profiles.active=prod

四. 配置文件位置

1. 本地启动

在这里插入图片描述

2. 运维工作
  • 项目打包,运维如果想修改某些参数,可以在cmd窗口指定配置文件位置;
  • 项目启动,先去指定位置找文件,再按照项目中的配置文件优先级再去加载,形成互补和覆盖配置;
    java -jar profile-1.0-SNAPSHOT.jar --spring.config.location= F:\he\application.yaml

五. 启动jar包,配置文件加载顺序

项目启动后,按照如下优先级从高往低,进行覆盖互补配置
1. 命令行:

  • java -jar profile-1.0-SNAPSHOT.jar --server.port=1000
    –server.context-path=/jam 来指定几个参数;
  • java -jar profile-1.0-SNAPSHOT.jar --spring.config.location
    F:\he\application.yaml指定一个配置文件的位置;(配置文件位置任意);

2. 由外到内,由带profile到不带profile:
外部配置文件必须和jar包在同一个目录下,cmd直接启动

  • 1: JAR包外部的application-{profile}.properties/yaml
    或application.properties/yaml(带profiles属性);
  • 2: JAR包内部的application-{profile}.properties/yaml
    或application.properties/yaml(带profiles属性);
  • 3: JAR包外部的application.properties/yaml
    或application.properties/yaml(不带profiles属性);
  • 4: JAR包内部的application.properties/yaml
    或application.properties/yaml(不带profiles属性);

其他优先级配置可以参考SpringBoot官网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值