我正在尝试设置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
答案 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
的对象自动连接时执行。通过这种方式,我们可以控制使用哪个实例以及在其上设置的参数。