Springboot 读取 properties 并与实体类进行绑定

Springboot 使用 @ConfigurationProperties 和 @PropertySource 来读取指定位置的 .peoperties 配置文件,并将配置文件中的 value 值与对应的实体类进行绑定,具体步骤如下:

1、配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 基本数据类型的值与实体类中属性进行映射绑定
person.name=小毛毛
person.age=21
person.height=157.00
// 数组元素与实体类中 hobby 属性进行映射绑定
person.hobby[0]=LOL
person.hobby[1]=KFC
person.hobby[2]=COFFE
// List集合中元素与实体类 pets 属性进行映射绑定
person.pets[0].name=Husky
person.pets[0].age=2
person.pets[0].color=gray
person.pets[1].name=persian
person.pets[1].age=3
person.pets[1].color=orange
// Map集合中元素与实体类中 featureLevel 属性进行映射绑定
person.featureLevel.clever=10
person.featureLevel.lovely=8
person.featureLevel.funny=8

2、实体类 Person

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 将 Person 注入到 IOC 容器中,只有容器中的组件才能使用 Springboot 的强大功能
@Configuration
// 将 person 下级的 key 与实体类进行映射绑定,并为其注入属性值
@ConfigurationProperties(prefix = "person")
// 加载指定位置的 properties 配置文件
@PropertySource("classpath:config/application.properties")
// 该类省略了 set/get 方法
public class Person {
    // 基本数据类型的属性
    private String name;
    private Integer age;
    private double height;
    // 数组
    private String[] hobby;
    // List 集合
    private List<Pet> pets;
    // Map 集合
    private Map<String, String> featureLevel;
}

3、实体类 Pet (省略 get/set/toString)

1
2
3
4
5
public class Pet {
    private String name;
    private String age;
    private String color;
}

4、测试类

1
2
3
4
5
6
7
8
9
10
11
12
@RunWith(SpringRunner.class)
@SpringBootTest
public class Springboot01ApplicationTests {
    @Autowired
    private ApplicationContext ioc;
 
    @Test
    public void testProperties() {
        Person person = ioc.getBean("person", Person.class);
        System.out.println(person);
    }
}

5、测试结果

1
2
3
4
5
6
7
8
9
10
11
Person{
    name='小毛毛',
    age=21,
    height=157.0,
    hobby=[LOL, KFC, COFFE],
    pets=[
        Pet{name='Husky', age='2', color='gray'},
        Pet{name='persian', age='3', color='orange'}
        ],
    featureLevel={clever=10, lovely=8, funny=8}
}

 

  

 

posted @   变体精灵  阅读(1599)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示