Springboot入门(六)读取配置文件中的数据(list、map、对象)

springboot读取配置文件方法常用有两种方式

  1. @Value
  2. @ConfigurationProperties

两种方式获取值的对比

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

防止配文读取乱码

在测试之前我们需要把创建文件的格式都改为UTF-8
在这里插入图片描述
在这里插入图片描述
application.properties 加入如下配置(这里我试了不加也只要上面设置了也没问题,如果上面设置了还是有乱码就加上这个配置)

server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8

1.@Value方式获取配置信息

目录结构
在这里插入图片描述
新建配置文件 config.properties

teacher.id=123 
teacher.name=阿离

po : teacher

@Data
@NoArgsConstructor
@Component
//不使用这个注解默认读取application.properties
@PropertySource(value = "classpath:config.properties")
public class Teacher {
    @Value("${teacher.id}")
    private Integer id;
    @Value("${teacher.name}")
    private String name;
}

创建测试类测试
SpringbootTest

@RunWith(SpringRunner.class)
@SpringBootTest(classes = MybatisApplication.class)
public class SpringbootTest {

    @Autowired
    Teacher teacher;


    @Test
    public void testTeacher() {
        System.out.println(teacher);

    }


}

注意:MybatisApplication.class自己要创建 不然会报错

2.@ConfigurationProperties注解读取

配置文件
config.properties 加入如下类容

user.id=666
user.name=奏
user.age=12
user.state=true
user.teacher.id=123
user.teacher.name=阿离
user.list[0]=666
user.list[1]=啦啦啦
## 或者这样 stuedent.list=666,啦啦啦
user.map[id]=101
user.map[name]=张飞哦
## map或者这样读取 student.map.id=101

测试po User

@Data
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "user")
//不使用这个注解默认读取application.yml
@PropertySource(value = "classpath:config.properties")
public class User {

    private Integer id;
    private String name;
    private Integer age;
    private Boolean state;
    private Teacher teacher;
    private List<Object> list;
    private Map<Object, String> map;

}

测试中添加测试方法

 @Autowired
    User user;
    
@Test
    public void testUser(){
        System.out.println(user);
    }

然后运行测试方法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值