上下文与上下文 - 设置ignore-unresolvable =“true” - PropertyPlaceholderConfigurer

时间:2016-07-28 16:55:56

标签: spring property-files

问题

我正在尝试设置ignore-unresolvable="true"

我在问题https://stackoverflow.com/a/11773267/1688441中找到了答案how to define not mandatory property in spring?

他们展示的例子是:

<context:property-placeholder ignore-unresolvable="true" ... />

但是,在我继承的项目中,我们有一个名为project.xml的项目文件,其中包含带有Resource标记的Context个定义。

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource />
<ResourceLink />
<Resource />
</Context>

注意:资源已被删除

当我修改Context标记以添加ignore-resolvable时,所有内容都会中断,甚至不会读取DataSource资源。有人有什么想法吗?

我尝试了以下内容:

<Context:property-placeholder ignore-unresolvable="true">

可能相关:

spring PropertyPlaceholderConfigurer and context:property-placeholder

1 个答案:

答案 0 :(得分:1)

事实证明,在特定项目中,正在使用基于类的配置而不是XML。我在返回setIgnoreUnresolvablePlaceholders(false)的方法中找到了以下类PropertySourcesPlaceholderConfigurer

@Configuration
@ComponentScan
@EnableWebMvc
@EnableAsync
@EnableScheduling
@PropertySource(value = {"classpath:appProp.properties"})
@Import({ExternalizeConfiguration.class, AppApplication.class,
        AppPersistenceApplication.class, ConnectBoIntegrationApplication.class})
public class AppWebApplication extends WebMvcConfigurerAdapter {

...Other Code...

/**
     * Bean required for Value annotation
     */
    @Bean
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
        PropertySourcesPlaceholderConfigurer test = new PropertySourcesPlaceholderConfigurer();
        test.setIgnoreUnresolvablePlaceholders(false);
        return test;
    }

}

所以我的理解是,将此方法注释为@Bean会导致方法在类型为PropertySourcesPlaceholderConfigurer的对象自动连接时执行。通过这种方式,我们可以控制使用哪个实例以及在其上设置的参数。