2013-05-24 14 views
23

Spring XML設定ファイルでデフォルトのプロパティ値を定義します。このデフォルト値をnullにします。このようなデフォルトのプロパティ値をSpringにNULLとして指定します。

何か:

... 
<ctx:property-placeholder location="file://${configuration.location}" 
          ignore-unresolvable="true" order="2" 
          properties-ref="defaultConfiguration"/> 

<util:properties id="defaultConfiguration"> 
    <prop key="email.username" > 
     <null /> 
    </prop> 
    <prop key="email.password"> 
     <null /> 
    </prop> 
</util:properties> 
... 

これは動作しません。 Spring XML設定のプロパティのデフォルト値をnullと定義することもできますか?

+0

あなたはあなた自身の質問に答えました。 ooops

+0

これは動作しません。 '要素 'null'で始まる無効な内容です。この時点で子要素はありません。 " –

+0

私はあなたがそうすることはできないと思います。おそらくそれらのプロパティを削除するだけで十分です。 Javaプロパティーは、プロパティーが定義されていない場合はnullを戻します。 – soulcheck

答えて

66

このような方法で、春ELを使用することをお勧めし

<property name="password" value="${email.password:#{null}}"/> 

それはemail.passwordが指定されているかどうかチェックし、そうでない場合

+0

パーフェクト!これはspring-elへの依存性を導入しますか? –

2

Spring ELを試してみてください。

<prop key="email.username">#{null}</prop> 
+0

これは動作しません。 'prop'は' value'属性を持っていません。 解決策がある場合、 'prop'以外の何かが使われなければならないと思います。 –

+0

タグの間にELを置くことができます。 – YoK

+2

このようにしてNPEをスローする '原因:org.springframework.beans.factory.BeanCreationException:名前が 'defaultConfiguration'のBeanを作成中にエラーが発生しました:Beanの初期化に失敗しました。ネストされた例外はjava.lang.NullPointerException' –

2

PropertyPlaceholderConfigurer#setNullValue(String)を見てnull(ない"null"文字列)に設定します

デフォルトでは、このようなヌル値は定義されていません。これは、あなたが明示的に対応する値をマッピングしていない限り、プロパティ値としてnullを表現する方法がないことを意味し

だからあなたPropertyPlaceholderConfigurerにNULL値にマッピングするために「ヌル」の文字列を定義します。

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="nullValue" value="null"/> 
    <property name="location" value="testing.properties"/> 
</bean> 

今、あなたのプロパティファイルでそれを使用することができます。

db.connectionCustomizerClass=null 
db.idleConnectionTestPeriod=21600 
+1

これは、あなたが文字列 "null"を使用することを許可されないことを意味します。 –

+0

正直言って、誰が '' null''ではなく '' null''文字列を設定しますか? – EpicPandaForce

+0

Hibernateプロパティdb.connectionCustomizerClass:com.mchange.v2.c3p0.example.InitSqlConnectionCustomizerまたはnullを設定します。設定はMavenフィルタリングによって設定されます。 –

0

あなたが次の操作を行うことができます表示されます。

@Value("${some.value:null}") 
private String someValue; 

@Bean 
public static PropertySourcesPlaceholderConfigurer propertyConfig() { 
    PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer = new PropertySourcesPlaceholderConfigurer(); 
    propertySourcesPlaceholderConfigurer.setNullValue("null"); 
    return propertySourcesPlaceholderConfigurer; 
} 
関連する問題