摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢!
一.自动配置
二.自定义属性
## 家乡属性 Dev home.province=ZheJiang home.city=WenLing home.desc=dev: I'm living in ${home.province} ${home.city}.
/** * 家乡属性 * * Created by bysocket on 17/04/2017. */ @Component @ConfigurationProperties(prefix = "home") public class HomeProperties { /** * 省份 */ private String province; /** * 城市 */ private String city; /** * 描述 */ private String desc; public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } @Override public String toString() { return "HomeProperties{" + "province='" + province + '\'' + ", city='" + city + '\'' + ", desc='" + desc + '\'' + '}'; } }
## 家乡属性 home: province: 浙江省 city: 温岭松门 desc: 我家住在${home.province}的${home.city}
user.name=zhang
获取配置文件 user.name:
@Value("${user.name}") String name; @Test public void getHomeProperties() { LOGGER.info("\n\n" + homeProperties.toString() + "\n"); LOGGER.info(name); }
获取配置文件 user.name:结果:
三.random.*属性2018-03-23 10:54:13.643 INFO 625 --- [ main] o.s.springboot.property.PropertiesTest : uknowzxt
UserProperties{id=-3135706105861091890, age=41, desc='泥瓦匠叫做3cf8fb2507f64e361f62700bcbd17770', uuid='582bcc01-bb7f-41db-94d5-c22aae186cb4'}
## 随机属性 user: id: ${random.long} age: ${random.int[1,200]} desc: 泥瓦匠叫做${random.value} uuid: ${random.uuid}
四. 多环境配置
application-dev.properties:开发环境 application-prod.properties:生产环境
# Spring Profiles Active spring.profiles.active=dev
HomeProperties{province='ZheJiang', city='WenLing', desc='dev: I'm living in ZheJiang WenLing.'}
HomeProperties{province='ZheJiang', city='WenLing', desc='prod: I'm living in ZheJiang WenLing.'}
mvn package java -jar -Dspring.profiles.active=prod springboot-properties-0.0.1-SNAPSHOT.jar
五.通过命令行设置属性
相信使用过一段时间Spring Boot的用户,一定知道这条命令:java -jar xxx.jar --server.port=8888
,通过使用—server.port属性来设置xxx.jar应用的端口为8888。
在命令行运行时,连续的两个减号--
就是对application.properties
中的属性值进行赋值的标识。所以,java -jar xxx.jar --server.port=8888
命令,等价于我们在application.properties
中添加属性server.port=8888
,该设置在样例工程中可见,读者可通过删除该值或使用命令行来设置该值来验证。
通过命令行来修改属性值固然提供了不错的便利性,但是通过命令行就能更改应用运行的参数,那岂不是很不安全?是的,所以Spring Boot也贴心的提供了屏蔽命令行访问属性的设置,只需要这句设置就能屏蔽:SpringApplication.setAddCommandLineProperties(false)
。