34

我正在使用带有 PropertyPlaceholderConfigurator 的 spring 3。

我的属性代码如下所示:

@Configuration
public class MyProps {

    @Value("${prop1}")
    public String prop1;

    ...
}

如果我的 .properties 文件中没有 prop1,则 spring 无法初始化它的上下文。

问题是我如何定义这个属性不是强制性的?一些注释,配置?

4

3 回答 3

66

您可以使用默认值:

@Value("${prop1:}")
public String prop1;

如果未定义属性,spring 将注入一个空字符串。语法是${property:defaultValue}.

于 2012-08-02T08:05:17.997 回答
11

我不确定是否可以将单个属性设为可选,但您当然可以强制属性占位符忽略未解析的属性:

<context:property-placeholder ignore-unresolvable="true" ... />
于 2012-08-02T07:55:57.340 回答
0

要忽略所有不可解析的属性而不是特定属性,您可以在配置类中使用以下 bean:

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
    configurer.setIgnoreUnresolvablePlaceholders(true);
    return configurer;
}
于 2021-05-01T22:11:45.800 回答