SpringBoot中为用户提供了自定义式配置的解析,我们只需要通过SpringBoot提供的注解,就可以直接将yml或properties配置文件中自定义的属性,以Java面向对象的理解方式解析出来。
项目环境搭建
在此前的多篇博客中,我已经搭建过很多SpringBoot的项目环境,在这里就不重复搭建了,如果有需要的可以参考以前的博客:
自定义配置
SpringBoot的自定义配置非常简单,我们直接在配置文件中写符合配置文件的格式的内容即可。
1 2 3 4 5 6 7 8 9 10 11
| my: properties: name: 小小 age: 18 hobby: - 写代码 - 运动 - 阅读 family: father: 爸爸 mother: 妈妈
|
在这里,我使用的application.yml配置文件,YML文件结构具有层次性,文件内容可读性高。
YML文件的格式规定,缩进相同的配置为同一层次的内容,每个冒号后面都需要空一格。
编写Java类读取配置文件
1 2 3 4 5 6 7 8 9
| @Data @Component @ConfigurationProperties(prefix = "my.properties") public class Userproperties { private String name; private Integer age; private List<String> hobby; private Map<String,String> family; }
|
- SpringBoot中使用
@ConfigurationProperties
配置来表明这是一个读取配置文件内容的Java类。
prefix
属性是配置文件配置的属性的前缀,Java类的属性名和配置文件中配置的属性名相同,即可自动注入到对应的属性中去。
- 集合在配置文件中的书写方式是使用
-
来表示的,每个-
后面都空有一个空格。
- Map集合的书写方式,是一个
key: value
形式。
功能测试
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| @RunWith(SpringRunner.class) @SpringBootTest() public class UserPropertiesTest {
@Autowired private Userproperties userproperties;
@Test public void test(){ System.out.println("用户的姓名是:"+userproperties.getName()); System.out.println("用户的年龄是:"+userproperties.getAge()); System.out.println("用户的爱好是:"); for (String hobby : userproperties.getHobby()) { System.out.println(hobby); } for (Map.Entry<String, String> entry : userproperties.getFamily().entrySet()) { System.out.println(entry.getKey()+":"+entry.getValue()); } } }
|
输出结果
1 2 3 4 5 6 7 8
| 用户的姓名是:小小 用户的年龄是:18 用户的爱好是: 写代码 运动 阅读 father:爸爸 mother:妈妈
|