SpringBoot学习1.3-配置详解

简介:

springBoot可以通过多种方式设置参数,其优先级如下:

  1. 如果使用了devtools,则以home目录下的~/.spring-boot-devtools.properties为主
  2. @TestPropertySource注解的测试
  3. @SpringBootTest#properties注解的测试
  4. 命令行参数
  5. SPRING_APPLICATION_JSON提供的属性(JSON格式,从环境变量或者系统属性中获取)
  6. ServletConfig配置的属性
  7. ServletContext配置的属性
  8. JNDI配置的属性,(java:comp/env)
  9. Java 系统属性,System.getProperties()
  10. 系统环境变量
  11. RandomValuePropertySource进针对于random.*
  12. jar包外部指定profile文件,例如application-{profile}.properties(YAML 同)
  13. jar包内部的指定profile文件
  14. 应用外部的application.properties
  15. 应用内部的application.properties
  16. @PropertySource注解
  17. 默认属性(SpringApplication.setDefaultProperties()) 例如:

本篇文章主要是针对配置文件和部分注解的使用;

实践:

1.配置多个环境

一般开发,测试,到生产会有多个环境,每个环境会存在一些配置信息在各个环境不一致,这些配置信息即可复制成多份;再application.properties中使用spring.profiles.active来指定环境;

2.配置文件中参数配置

a.一般参数形式及参数间的相互使用:

#测试参数的引用
pers.cc.properties.params.name=age
pers.cc.properties.params.value=18
pers.cc.properties.params.desc=${pers.cc.properties.params.name}:${pers.cc.properties.params.value}

b.随机数的配置:

# 测试随机数
# 随机字符串
pers.cc.properties.params.random=${random.value}
# 随机int
pers.cc.properties.params.random1=${random.int}
# 随机long
pers.cc.properties.params.random2=${random.long}
# 10以内的随机数
pers.cc.properties.params.random3=${random.int(10)}
# 10-20以内的随机数
pers.cc.properties.params.random4=${random.int[10,20]}

c.数组的配置

#测试数组
pers.cc.properties.param.strArr[0]=aaaa
pers.cc.properties.param.strArr[1]=bbbb

pers.cc.properties.param.intArr=1,2,3,4

3.配置参数的使用

参数一般分两种:

1.如果配置的是系统参数,系统会自动引用如server.port端口号;

2.业务参数,需要系统中引用;引用的方法很简单即在bean(即使用注解@RestController,@Component等注解标注后)中定义变量,使用@Value等注解进行赋值

a.当个赋值,即使用@Value注解一个个赋值,如下(去除set,get方法):

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component("params")
public class Params {
	@Value("${pers.cc.properties.params.name}")
	private String name;

	@Value("${pers.cc.properties.params.value}")
	private String value;

	@Value("${pers.cc.properties.params.desc}")
	private String desc;

	@Value("${pers.cc.properties.params.random}")
	private String random;

	@Value("${pers.cc.properties.params.random1}")
	private int random1;

	@Value("${pers.cc.properties.params.random2}")
	private long random2;

	@Value("${pers.cc.properties.params.random3}")
	private int random3;

	@Value("${pers.cc.properties.params.random4}")
	private int random4;

	@Override
	public String toString() {
		return "Params [name=" + name + ", value=" + value + ", desc=" + desc + ", random=" + random + ", random1="
				+ random1 + ", random2=" + random2 + ", random3=" + random3 + ", random4=" + random4 + "]";
	}

}

b.整体赋值,按照整个节点赋值到整个bean,此时也可指定配置文件,即将配置文件按照业务划分多个:如下(去除set,get):

import java.util.Arrays;


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;


@ConfigurationProperties(prefix = "pers.cc.properties.param")
@PropertySource(value = { "config/param.properties" })
@Component("param")
public class Param {
	private String name;


	private String value;


	private String desc;


	private String random;


	private int random1;


	private long random2;


	private int random3;


	private int random4;


	private String[] strArr;


	private int[] intArr;

	@Override
	public String toString() {
		return "Param [name=" + name + ", value=" + value + ", desc=" + desc + ", random=" + random + ", random1="
				+ random1 + ", random2=" + random2 + ", random3=" + random3 + ", random4=" + random4 + ", strArr="
				+ Arrays.toString(strArr) + ", intArr=" + Arrays.toString(intArr) + "]";
	}


}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值