2013-05-24 3 views
23

Я хочу определить значение свойства по умолчанию в файле конфигурации Spring XML. Я хочу, чтобы это значение по умолчанию было null.Задайте значение свойства по умолчанию как значение 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> 
... 

Это не работает. Возможно ли определить null значения по умолчанию для свойств в конфигурации Spring XML?

+0

Вы ответили на свой вопрос. Использовать ooops

+0

Это не работает так: 'Неверный контент, начинающийся с элемента 'null'. На данный момент не ожидается никакого дочернего элемента. –

+0

Я не думаю, что вы можете это сделать. Возможно, удаление этих свойств будет достаточно. Свойства Java возвращают значение null, если свойство не определено. – soulcheck

ответ

66

Лучше использовать Spring EL таким образом

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

он проверяет, указан ли email.password и устанавливает его в null (не "null" строки) в противном случае

+0

Отлично! Влияет ли это на зависимость от весны? –

2

Вы можете попробовать использовать пружину EL.

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

Это не работает. 'prop' не имеет атрибута' value'. Я думаю, что если есть решение, нужно использовать что-то другое, чем 'prop'. –

+0

Вы можете разместить EL между тегами, измененными anwser. – YoK

+2

Таким образом он выбрасывает NPE 'Причина: org.springframework.beans.factory.BeanCreationException: Ошибка создания bean-компонента с именем 'defaultConfiguration': Инициализация компонента не выполнена; вложенное исключение - java.lang.NullPointerException' –

2

посмотреть на PropertyPlaceholderConfigurer#setNullValue(String)

В нем указывается, что:

По умолчанию такое нулевое значение не задано. Это означает, что не существует никакого способа выразить нуль в качестве значения свойства, если вы Явно не отобразить соответствующее значение

Так просто определить строку «нулевой», чтобы отобразить нулевое значение в вашем PropertyPlaceholderConfigurer:

<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; 
} 
Смежные вопросы