Spring注解模拟财产占位符

时间:2019-02-01 16:54:02

标签: spring spring-boot

我有弹簧XML配置。我需要使用Spring注释重写它。

这个问题很直截了当:Spring注释中是否有Spring XML语句<context:property-placeholder location="classpath*:META-INF/*.properties"/>的直接替代方法,它可以与示例(classpath*:META-INF/*.properties)中被掩盖的位置一起使用?或其他替代方法,它将扫描我的类路径并在其中找到所有属性文件。

我试图@PropertySource,但看起来不明白掩蔽。将直接路径属性文件是不是在我的情况下的一个选项,因为他们的计数可以独立地变化。

2 个答案:

答案 0 :(得分:0)

我要寻找的替代方法是在配置中声明此bean:

@Bean
public static PropertySourcesPlaceholderConfigurer propPlaceholder() throws Exception {
    PropertySourcesPlaceholderConfigurer propertyConfigurer = new PropertySourcesPlaceholderConfigurer();
    propertyConfigurer.setLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:META-INF/*.properties"));
    return propertyConfigurer;
}

这不是注释,而是XML语句的替代。

答案 1 :(得分:0)

您可以使用ConfigurableApplicationContext类,还可以从不同位置加载属性文件,如下所示:

    ConfigurableApplicationContext appContext = new SpringApplicationBuilder(Application.class)
                .properties("spring.config.name:application,application2",
                        "spring.config.location:classpath:/external/application/properties/,classpath:/external/application2/properties")
                .build().run(args);


    ConfigurableEnvironment env = applicationContext.getEnvironment();

其中“ spring.config.name”下的值指定属性文件的名称(此处为application.properties和application2.properties),“ spring.config.location”下的值指定上述应用程序文件的路径分别