application.yml配置:
book: name: 一个人的朝圣 author: 蕾秋·乔伊斯 age: 35
Spring的@Value
程序代码里,Spring主要在@Value注解的参数中使用EL表达式。
- 注入普通字符串
- 注入操作系统属性
- 注入表达式运算结果
- 注入其他Bean的属性
- 注入文件内容
- 注入网址内容
- 注入属性文件(注意:用的是$符号)
@Component @Data public class BookConfig { @Value("${book.name}") private String bookName; @Value("${book.author}") private String bookAuthor; @Value("${book.age}") private int bookAge; }
Spring Boot的@ConfigurationProperties
@Component @ConfigurationProperties(prefix = "book") @Data public class BookConfig { private String name; private String author; private int age; }
可以直接通过 @Autowired 声明调用
@Autowired private BookConfig bookConfig;
@ConfigurationProperties有两个属性
- prefix:指定properties的配置的前缀
- locations:指定properties文件的位置
终结:
上面这种使用@Value注入每个配置在实际项目中会显得格外麻烦,因为我们的配置通常会是许多个,就要使用@Value注入很多次。
Spring Boot提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties属性和一个Bean关联,从而实现类型安全的配置。