【每日新知】
@Value 注解
(1)@Value 注解用来注入一些被外部化的属性:
@Component
public class MovieRecommender {
private final String catalog;
public MovieRecommender(@Value("${catalog.name}") String catalog) {
this.catalog = catalog;
}
}
(2)指定需要解析的外部配置文件:@Configuration
@PropertySource("classpath:application.properties")
public class AppConfig {
}
(3)外部配置文件 application.properties 内容:catalog.name=MovieCatalog在上边步骤下,catalog 参数的值将被赋值为:MovieCatalog。其中,如果 ${} 占位符无法被解析,将导致 Spring 初始化失败, 另外,占位符也可以使用 PlaceholderConfigurerSupport 中的 setPlaceholderPrefix()、setPlaceholderSuffix() 或 setValueSeparator() 等方法来实现自定义。注意:Spring Boot 默认配置了一个 PropertySourcesPlaceholderConfigurer bean,该 bean 默认会从 application.properties 和 application.yml 文件中读取 properties 属性。Spring 提供的内置转换器支持自动处理简单的类型转换(例如 Integer 或 int )。在 @Value 注入的值中,如果有使用多个逗号分隔的值可以自动转换为 String 数组,无需额外的处理。