@Value和@ConfigurationProperties获取值比较

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

用@Value获取值

@Component
//@ConfigurationProperties(prefix = "people")
public class People {


    /**
     * <bean class="people">
     *     <property name="lastName" value="字面量/${key}从环境变量,配置文件中获取值/#{spel}"></property>
     * </bean>
     */
     //${key}
    @Value("${people.lastName}")
    private String lastName;
    //#{}
    @Value("#{11*2}")
    private Integer age;
    @Value("${people.boss}")
    private Boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<String> pets;

    private Dog dog;

用@ConfigurationProperties获取值

@Component
@ConfigurationProperties(prefix = "people")
public class People {
    /**
     * <bean class="people">
     *     <property name="lastName" value="字面量/${key}从环境变量,配置文件中获取值/#{spel}"></property>
     * </bean>
     */
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<String> pets;

    private Dog dog;
1.松散语法

@ConfigurationProperties属性名匹配规则

  1. person.firstName:使用标准方式
  2. person.first_name:大写用_
  3. person.first-name:大写用-
2 .数据校验
@Component
@ConfigurationProperties(prefix = "people")
//校验注解
@Validated
public class People {
//检查lastName是否符合邮件格式
    @Email
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<String> pets;

    private Dog dog;
3. 复杂类型封装

@Value只能获取基本数据类型
@ConfigurationProperties可以获取map,list等封装类型的值

4.总结
  • 配置文件yaml和properties都可以获取到值
  • 如果只是需要在业务逻辑中获取一下配置文件中的某个值,使用@Value
  • 如果是要把javabean和配置文件进行一一映射,使用@ConfigurationProperties
//RestController相当于@Controller和@ResponseBody
@RestController
public class HelloController {

    @Value("${people.lastName}")
    private String name;
    
    @RequestMapping("/hello")
    public String hello(){
        return "I LOVE "+name;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值