配置文件的占位符,我们在配置文件中,在写某一个值的时候,第一种我们可以使用SpringBoot提供的随机数,我们想使用前面配置的值,我们可以使用占位符获取这个值,包括没有在前面配置的话,可以使用冒号来使用默认值,我们来演示一下这两个

我们要读取person.properties,我们就不搞的这么麻烦了,就让他读主配置文件,然后把主配置文件的properties打开,无论是用yml还是properties,都支持我们这个操作,比如随机数,比如张三,random里面有一个uuidperson.last-name=\u674E\u56DB${random.uuid}包括年龄我们也可以写一个随机数,我们年轻是一个随机的整数person.age=${random.int}比如看这个名字,比如狗的名字我们想取出person.last-name的值,然后在后面拼一个dogperson.dog.name=${person.last-name}_dog包括前面配的server.port的东西,这是我的这两个写法,一个用了一个随机数,还有咱们的占位符,测试一下我的person对象,获取出来是什么样子呢,我们发现person里面的lastName,张三这是一串随机数,age是一个随机的int值,包括我们的dog,dog是张三前面这一串加上dog,包括说如果我们前面没有配置
#server.port=8081person.last-name=\u674E\u56DB${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.last-name}_dog
person.dog.age=15
package com.learn.bean;import java.util.Date;
import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** 将配置文件中配置的每一个属性的值,映射到这个组件* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中的相关的配置进行绑定*      prefix="person":配置文件中哪个下面的所有属性进行映射* * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;* 默认从全局配置文件中获取值;*/
//@PropertySource(value= {"classpath:person.properties"})
@Component
@ConfigurationProperties(prefix="person")
//@Validated
public class Person {/*** <bean class="person">*    <property name="lastName" value="字面量/${key}从环境变量、配置文件中获取值/#{SpEL}"></property>* </bean>*/// lastName必须是邮箱格式//@Email
//  @Value("${person.last-name}")private String lastName;
//  @Value("#{10*2}")private Integer age;@Value("true")private Boolean boss;private Date birth;
//  @Value("${person.maps}")private Map<String,Object> maps;private List<Object> lists;private Dog dog;public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Boolean getBoss() {return boss;}public void setBoss(Boolean boss) {this.boss = boss;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}public Map<String, Object> getMaps() {return maps;}public void setMaps(Map<String, Object> maps) {this.maps = maps;}public List<Object> getLists() {return lists;}public void setLists(List<Object> lists) {this.lists = lists;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}@Overridepublic String toString() {return "Person [lastName=" + lastName + ", age=" + age + ", boss=" + boss + ",
birth=" + birth + ", maps="+ maps + ", lists=" + lists + ", dog=" + dog + "]";}}
package com.learn.springboot;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.junit4.SpringRunner;import com.learn.bean.Person;/*** SpringBoot单元测试** 可以在测试期间很方便的类似编码一样进行自动注入等容器的功能*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringBoot02ConfigurationTests {@AutowiredPerson person;@AutowiredApplicationContext ioc;@Testpublic void testHelloService() {boolean b = ioc.containsBean("helloService02");System.out.println(b);}@Testpublic void contextLoads() {System.out.println(person);}}
我现在前面没有配人名,他现在就解析出错,出错的原因呢,是我们要绑定person的值,我们要绑定person里面的每一个属性,他都要在配置文件中要找到,然后我们不能够解析person.last-name,我们配置文件中没有lastName相关的信息,我们写一个person.hello,我们从来没有写过person.hello的值,如果获取不到值就是默认的表达式,但是我们可以使用一个冒号,给定一个默认值,如果person.hello取不出值,我们就默认使用后面这一串,dog就叫hello_dog没问题
#server.port=8081person.last-name=\u674E\u56DB${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog
person.dog.age=15
这就是我们的配置文件占位符,随机数的其他用法,大家在这试一试就行了,我们可以用这几个随机数,第一个我们能够用这些随机数

占位符获取之前配置的值,如果没有,可以使用指定默认值,这些随机数也能用,包括我们获取默认值也能用

SpringBoot_配置-配置文件占位符相关推荐

  1. springboot 的两种配置文件语法||配置文件占位符||@Value 读取配置文件及验证处理

    [掌握]springboot 的两种配置文件语法 导入配置文件自动提示的包 创建 Student 类 创建修改 application.properties 配置文件占位符 ${random.int} ...

  2. 配置文件占位符||Profile——1、多Profile文件 2、yml支持多文档块方式 3、激活指定profile

    配置文件占位符 1.随机数 2.占位符获取之前配置的值,如果没有可以是用:指定默认值 Profile 1.多Profile文件 我们在主配置文件编写的时候,文件名可以是 application-{pr ...

  3. Spring boot配置文件占位符

    配置文件占位符 占位符 获取配置文件中,之前配置的属性值 如果,没有这个属性 可以是用:指定默认值 配置方式 persion.id=${random.uuid} person.last-name=张三 ...

  4. SpringBoot系列之配置文件占位符使用

    SpringBoot系列之配置文件占位符使用 Springboot占位符支持的有随机数和配置的值等等,本博客主要介绍的是随机数和获取属性配置值的简单用法 随机数获取 支持的写法有: ${random. ...

  5. properties随机数与配置文件占位符

    目录 理论 例子 理论 RandomValuePropertySource:配置文件中可以使用随机数 ${random.value}.${random.int}.${random.long}.${ra ...

  6. kotlin build.gradle.kts配置,支持占位符替换文件中变量

    kotlin springboot工程kotlin_app kotlin_app/build.gradle.kts: import org.apache.tools.ant.filters.FixCr ...

  7. SpringBoot_配置-配置文件的加载位置

    springboot文件的加载位置,springBoot在启动的时候,我们会把application.properties,或者application.yml,作为主配置文件,但是他的配置文件位置,既 ...

  8. spring boot 2-文件配置、YAML语法、文件处理器、文件占位符、profile

    文件配置 按尚硅谷视频的笔记做的这个发不出原创,就只能发转载了(转载链接是自己的) 一.配置文件 1.SpringBoot使用一个全局的配置文件,配置文件名是固定的: • application.pr ...

  9. Spring配置文件使用占位符配置

    Spring利用PropertyPlaceholderConfigurer占位符 1.Spring的框架中,org.springframework.beans.factory.config.Prope ...

最新文章

  1. 多伦多到温莎_我想要freeCodeCamp Toronto的Twitter来发布报价,所以我做了一个免费的bot来做到这一点。...
  2. Mybatis原理分析一 从JDBC到Mybaits
  3. 函数式编程学习之路(一)
  4. Effective Modern C++英文版及中文翻译
  5. vscode debug c++与opencv程序
  6. 作者:潘柱廷(1969-),男,启明星辰教授级高级工程师、首席战略官。
  7. linux git 显示 分支,Linux 终端显示 Git 当前所在分支
  8. Sqoop Java API 导入应用案例
  9. AxureShare太慢,自己搭建产品原型分享系统
  10. 情感分类介绍及发展方向
  11. 自制变压器,要注意几个内容
  12. 小故事大道理--驴子的逃离
  13. 关于sql server中isnull(值,值)是什么意思
  14. word文档可以打开但显示乱码的完全解决攻略
  15. 不能打开到主机的连接, 在端口 1521: 连接失败
  16. 从 Delphi 7 到 Delphi 2010
  17. python 中文名称文件保存
  18. WebRTC初学Demo
  19. 怎么实现ZBrush 4R7中界面视窗的快速转换
  20. vue+mintui+picker弹框选择器

热门文章

  1. 2014-2015-1学期使用的教材
  2. nyoj 14 会场安排问题(贪心专题)
  3. Google Map 自定义infowindow
  4. 【Lucene】Lucene的使用和优化
  5. %@taglib prefix=c uri=http://java.sun.com/jsp/jst1/core%报错
  6. vue.js的使用总结
  7. 通用权限管理系统组件 (GPM - General Permissions Manager) 中实现按部门组织机构设置权限...
  8. Python这么热,要不要追赶Python学习热潮?
  9. 洛谷P1561 [USACO12JAN]爬山Mountain Climbing 贪心 数学
  10. 【面经】蚂蚁金服一二三面的面经总结(内推实习方面)