@ConfigurationProperties与@Value的区别

最近面试被问到如何获取properties里面的值?我说用@Value,因为我只用过@Value,面试结束以后面试官说也可以使用@ConfigurationProperties,回去学习一下。。。
今天来整理一下,以备以后开发使用。
推荐地址:https://blog.csdn.net/qq_43513205/article/details/86564166

@ConfigurationProperties可以理解为编写一个JavaBean来和配置文件进行映射;如果只想在某个业务逻辑中获取一下配置文件中的某个值,使用@Value;

@ConfigurationProperties的使用

@Data
@Component
@PropertySource(value = {"classpath:person.properties"})
@ConfigurationProperties(prefix = "person")
public class Person {
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> list;
    private Dog dog;
}

@Data
public class Dog {
    private String name;
    private Integer age;
}
person.properties文件:
person.lastName=hhh
person.age=24
person.birth=2020/5/15
person.boss=true
person.maps.k1=v1
person.maps.k2=v2
person.list=a,b,c,j
person.dog.name=ddd
person.dog.age=12
 @Autowired
    private Person person;

    @Test
    public void Test09() {
        System.out.println(person);
    }
    测试结果:
    Person(lastName=hhh, age=24, boss=true, birth=Fri May 15 00:00:00 GMT+08:00 2020, maps={k1=v1, k2=v2}, list=[a, b, c, j], dog=Dog(name=ddd, age=12))

注意:person.properties中 person.lastName=hhh、person.last_name=hhh、person.last-name=hhh三种写法都可以。都可以与Person类的属性lastName匹配上。

@Value的使用

@Data
@Component
@PropertySource(value = {"classpath:person.properties"})
public class Person {
    @Value("${person.last-name}")
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String, Object> maps;
    private List<Object> list;
    private Dog dog;
}
person.last-name=hhh
person.age=24
person.birth=2020/5/15
person.boss=true
person.maps.k1=v1
person.maps.k2=v2
person.list=a,b,c,j
person.dog.name=ddd
person.dog.age=12
   @Autowired
    private Person person;

    @Test
    public void Test09() {
        System.out.println(person);
    }

注意:配置文件中的名称要和value表达式中的一致,否则会报异常:Could not resolve placeholder ‘person.lastName’ in value “${person.lastName}”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值