您的位置:首页 > 编程语言 > Java开发

Spring boot 读取配置文件(application.yml)中的属性值

2020-04-26 18:58 1061 查看

1、引入依赖

<!-- 支持 @ConfigurationProperties 注解 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

2、配置文件(application.yml)中配置各个属性的值:

#自定义配置文件信息

demo:
lastName: 泡沫之夏
age: 24
boss: false
birth: 1996/04/03
maps: {k1:v1,k2:v2,k3:v3}
lists:
- 山西
- 大同
- 太原
dog:
dogName: 二狗子
age: 2

3、创建一个bean来接收配置信息:

/**
* 自定义配置文件对象信息
* @ConfigurationProperties :根据配置文件中设置的属性,批量注入属性的值
*/
@Component
@ConfigurationProperties(prefix = "demo")
public class DemoProperties {

private String lastName;

private Integer age;

private Boolean boss;

private Date birth;

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;
}

public DemoProperties() {
}

public DemoProperties(String lastName, Integer age, Boolean boss, Date birth, Map<String, Object> maps, List<Object> lists, Dog dog) {
this.lastName = lastName;
this.age = age;
this.boss = boss;
this.birth = birth;
this.maps = maps;
this.lists = lists;
this.dog = dog;
}

@Override
public String toString() {
return "DemoProperties{" +
"lastName='" + lastName + '\'' +
", age=" + age +
", boss=" + boss +
", birth=" + birth +
", maps=" + maps +
", lists=" + lists +
", dog=" + dog +
'}';
}
}

启动后,这个bean里面的属性就会自动接收配置的值了。
4、单元测试用例:

@SpringBootTest
class DemoApplicationTests {
private static final Logger logger = LoggerFactory.getLogger(DemoApplicationTests.class);

@Autowired
DemoProperties demoProperties;

/* *
*
* Spring boot 读取自定义配置文件(application.yml)中的属性值测试类
*
*/
@Test
void contextLoads() {
logger.info(demoProperties.getLastName());
logger.info(demoProperties.getBoss().toString());
logger.info(demoProperties.getLists().toString());
logger.info(demoProperties.getMaps().toString());
logger.info(demoProperties.getAge().toString());
logger.info(demoProperties.getBirth().toString());
logger.info(demoProperties.getDog().getDogName());
logger.info(demoProperties.getDog().getAge().toString());
}

}

测试结果:

lastName: 泡沫之夏
age: 24
boss: false
birth: 1996/04/03
maps: {k1:v1,k2:v2,k3:v3}
lists:{山西,运城,太原}
dogName: 二狗子
age: 2

注:结果出现中文乱码的问题是由于代码字体格式

  • 点赞
  • 收藏
  • 分享
  • 文章举报
泡沫之夏Z 发布了6 篇原创文章 · 获赞 0 · 访问量 313 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐