2016-10-05 4 views
0

У меня есть свойство с аннотацией @Value, обычно заполняется из context.xml (JNDI/TOMCAT)Значения по умолчанию для весны @value аннотации

@Value("${some.property}") 
private String property 

Это прекрасно работает, но у нас есть объекты нашего программного обеспечения, где это свойство не должно быть настроено.

Однако, если имущество отсутствует, я получаю javax.naming.NameNotFoundException: Name [some.property] is not bound in this Context. Unable to find [some.property]., что логично.

Я попытался исправить эту проблему, добавив значение по умолчанию следующим образом:

@Value("${some.property:some_property_not_configured}") 
private String property 

Однако, я все еще получаю ту же ошибку.

Любые идеи, как предотвратить/исправить это?

Я хотел бы использовать это в Spring 3.2.x и среде Spring 4+. аннотаций @value доступны с весны 3+

UPDATE: Проблемы не с @value аннотации, но в приложении-config.xml

<entry key="some.property"> 
    <jee:jndi-lookup jndi-name="java:comp/env/some.property" /> 
</entry> 

Это вызвало ошибку при запуске время!

Однако, если добавить default-value="something" здесь, он все еще терпит неудачу с такой же ошибкой

+0

Вы подтвердили, что верно действие some_property_not_configured jndi name – kuhajeyan

ответ

0

Я решил сделать это, определяя значение по умолчанию в свойстве-заполнитель и в @value аннотацию:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="properties"> 
     <bean class="java.util.Properties"> 
      <constructor-arg> 
       <map> 
        <entry key="some.property"> 
         <jee:jndi-lookup jndi-name="java:comp/env/some.property" default-value="not_configured" /> 
        </entry> 
       </map> 
      </constructor-arg> 
     </bean> 
    </property> 
</bean> 

и:

@Value(value = "${some.property:not_configured}") 
private String property; 

 Смежные вопросы

  • Нет связанных вопросов^_^