spring 占位符默认值
@Value
批注中的${...}
占位符用于访问在@PropertySource
注册的属性。 这对于Spring应用程序中的@Configuration
bean非常有用,但不仅如此。 为确保这是可能的, PropertySourcesPlaceholderConfigurer
必须存在于所有需要占位符解析的应用程序上下文中。
在此博客文章中,您将学习如何在Spring 4应用程序中配置占位符分辨率,以及如何使用@Value
注释注入不同类型的对象,包括JSR-310 Date-Time,JSR-354 Money&Currency或java.util.Optional
。
注册
在没有no-xml配置的Spring应用程序中,必须在所有应用程序上下文中注册静态PropertySourcesPlaceholderConfigurer
bean。
要注册PropertySourcesPlaceholderConfigurer
只需将相同类型的静态bean与您想要访问的属性源一起添加到配置中。 要导入多个属性源,请使用@PropertySources
批注(Java 8之前的版本)或多个@PropertySource
批注(Java 8)。
@Configuration
@PropertySource("classpath:application.properties")
@ComponentScan
class ApplicationConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
将属性源添加到配置程序的另一种方法是调用其setLocation
方法:
@Configuration
@ComponentScan
class ApplicationConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
c.setLocation(new ClassPathResource("application.properties"));
return c;
}
}