从Spring JavaDoc:
为了使用PropertySource的属性解析$
{…}占位符在定义或@Value注释中,必须注册一个PropertySourcesPlaceholderConfigurer。在XML中使用时会自动发生,但是在使用@Configuration类时必须使用静态@Bean方法显式注册。有关详细信息和示例,请参见@Configuration的javadoc的“使用外部化的值”部分和@Bean的javadoc的“关于BeanFactoryPostProcessor-
返回@Bean方法的说明”。
因此,您正在尝试在启用占位符处理所需的代码块中使用占位符。
如@ M.Deinum所述,您应该使用PropertySource(默认或自定义实现)。
下面的示例显示如何在PropertySource批注中使用属性,以及如何从字段中的PropertySource注入属性。
@Configuration@PropertySource( value={"classpath:properties/${property:defaultValue}.properties"}, ignoreResourceNotFound = true)public class ConfigExample { @Value("${propertyNameFromFile:defaultValue}") String propertyToBeInjected; @Bean public static PropertySourcesPlaceholderConfigurer propertyConfigurer() { return new PropertySourcesPlaceholderConfigurer(); }}


