Java 如何在spring中定义非强制属性?

Java 如何在spring中定义非强制属性?,java,spring,Java,Spring,我将Spring3与PropertyPlaceHolderConfiguration一起使用 我的属性代码如下所示: @Configuration public class MyProps { @Value("${prop1}") public String prop1; ... } 如果我的.properties文件中没有prop1,spring将无法初始化它的上下文 问题是如何定义此属性不是强制性的?某些注释、配置?我不确定是否可以将单个属性设置为可选,但您肯定

我将Spring3与PropertyPlaceHolderConfiguration一起使用

我的属性代码如下所示:

@Configuration
public class MyProps {

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

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


问题是如何定义此属性不是强制性的?某些注释、配置?

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

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

您可以使用默认值:

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

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

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

@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
    configurer.setIgnoreUnresolvablePlaceholders(true);
    return configurer;
}

在这种情况下,所有属性都不是强制性的,但我只希望一些选定的属性是可选的,其余的是强制性的。我可以用一些注释来实现这一点吗?您可以为其编写单独的属性占位符,也可以设置空值:@Value(${prop1:#{null}}”)