Spring无法加载属性文件

时间:2017-03-16 17:15:48

标签: spring spring-boot

我指的是Spring中的一个属性源,带有@PropertySource注释,但只有当属性文件的名称是application.properties时,spring才能找到它。

我的属性文件位于src / main / resources。

1 个答案:

答案 0 :(得分:0)

您可能希望将配置设置为能够处理多个属性源。您可以通过多种方式执行此操作,但我建议您将属性配置与其他配置分开,以便模块化职责。虽然您也可以使用@Value批注来加载属性,但您可能需要考虑暂时自动装配环境。

@Configuration
@PropertySources({ // this takes in an array of property sources
@PropertySource("classpath:file.properties") // precede your property with classpath to find it in resources
})
public class MyConfiguration()
{
    @Autowired
    private Environment env; 

    @Bean
    public String provideSomeString()
    {
        return env.getProperty("some.property.in.file"); // get the property from the property file
    }
}

以下是使用@Value注释加载属性的快速方法。

@Configuration
@PropertySources({
@PropertySource("classpath:file.properties")
})
@Component
public class MyConfiguration()
{
    @Value("${some.property.in.file}") // get the property from the property file
    private String property;

    @Bean
    public String provideSomeString()
    {
        return property;
    }

    @Bean // this bean is required in order to pass properties into the @Value annotation, otherwise you will just get the literal string
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer()
    {
        return new PropertySourcesPlaceholderConfigurer();
    }
}