我正在使用带有 PropertyPlaceholderConfigurator 的 spring 3。
我的属性代码如下所示:
@Configuration
public class MyProps {
@Value("${prop1}")
public String prop1;
...
}
如果我的 .properties 文件中没有 prop1,则 spring 无法初始化它的上下文。
问题是我如何定义这个属性不是强制性的?一些注释,配置?
您可以使用默认值:
@Value("${prop1:}")
public String prop1;
如果未定义属性,spring 将注入一个空字符串。语法是${property:defaultValue}
.
我不确定是否可以将单个属性设为可选,但您当然可以强制属性占位符忽略未解析的属性:
<context:property-placeholder ignore-unresolvable="true" ... />
要忽略所有不可解析的属性而不是特定属性,您可以在配置类中使用以下 bean:
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setIgnoreUnresolvablePlaceholders(true);
return configurer;
}