这么写
person.lastname=张三
person.age=18
person.birth=2017/12/12
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=dog
person.dog.age=15
张三会出现乱码
所以去settings寻找file encoding 设置成utf-8并且勾选转换。
这是properties和yaml文件的配置区别。
configuration properties和@value的区别。
@Value("${person.lastname}")//赋值
private String lastname;
把properties文件中的值付过来,@value是spring框架底层的标签,用来赋值的,用这个方法赋值也行和configuration哪种方法的区别:@value要一个一个赋值,configuration不需要。只需要一个prefix=person就可以全部赋值了。
value支持spel表达式语言,configuration不支持。configuration支持松散语法绑定,configuration支持jsr303数据校验。
value就不会进行数据校验了。
配置文件注入数据校验
@Component @ConfigurationProperties(prefix = "person") @Validated//校验 public class person { //@Value("${person.lastname}")//赋值 //@Email//lastname 必须填成邮箱格式和@validated配套使用 private String lastname; private Integer age; private Boolean boss; private Date birth; private Map<String,Object>maps; private List<Object> lists; private Dog dog;
@value注解在复杂类型封装不支持,只能赋值基本类型的值。
configuration可以支持复杂类型的赋值。
如果只是专门编写了一个javabean来和配置文件进行映射,我们就直接使用configurationproperties。
如国只是在某个业务逻辑中需要获取一下配置文件的值,我们就用@value。