💖@Value
@Value是一个用于将配置文件(.properties或.yml文件)中的属性值注入到Java类中的注解。
- @Value("${}"):可以获取对应属性文件中定义的属性值。
- @Value("#{}"):表示 SpEl 表达式通常用来获取 bean 的属性,或者调用 bean 的某个方法。
在yml中定义配置属性值
custom: name: 玩不转 account: lonewalker
示例在类中使用@Value
提示:由 Spring 管理的 bean 中使用 @Value注解才会生效
💖@ConfigurationProperties
@ConfigurationProperties可以用于类级别或方法级别上。在类级别上使用@ConfigurationProperties注解时,它将这个类标识为一个配置属性类。
使用方式:
- @ConfigurationProperties + @Component(或其它实例化Bean的注解)注解到bean定义类上
- @ConfigurationProperties + @Bean注解到配置类的bean定义方法上
- @ConfigurationProperties注解到普通类,然后通过@EnableConfigurationProperties定义为bean
示例:
这里的字符串custom会和类中的属性名称组成全限定名去配置文件中查找
💖获取List和Map数据
💖字符串转List
如果是这种字符串拼接的,可通过以下方式获取
@Value("#{'${custom.list:}'.empty ? null : '${custom.list:}'.split(',')}")
首先这是一个EL表达式,${test.list:} 是为它加上默认值,但是这样有个问题,当不配置该 key 值,默认值会为空串,它的 length = 1,这样解析出来 list 的元素个数就不是空了,所以在此之前先判断一下是否为空。
💖@PropertySource
通过@PropertySource注解指定要加载的属性文件路径。
比如读取person.properties文件