Как я могу сделать свойства в файлах свойств обязательными в Spring?

У меня есть файл ApplicationContext.xml со следующим узлом:

<context:property-placeholder 
location="classpath:hibernate.properties, classpath:pathConfiguration.properties" />

Это указывает это оба properties файлы будут использоваться моим приложением.

Внутри pathConfiguration.properties, некоторые пути определяются, такие как:

PATH_ERROR=/xxx/yyy/error
PATH_SUCCESS=/xxx/yyy/success

A PathConfiguration боб имеет методы set для каждого пути.

Проблема: когда некоторые из тех обязательных путей не определяются, никакая ошибка не брошена. Как и где я должен решить эту проблему?

8
задан Paulo Guedes 4 May 2010 в 11:09
поделиться

3 ответа

Стандартное поведение PropertyPlaceholder, которое настраивается через генерирует исключение, когда свойство не может быть разрешено, если оно требуется в каком-то месте, если вы не настроите его иначе.

В вашем случае, если у вас есть объект Bean, для которого требуются такие свойства, он завершится ошибкой, если значение не может быть определено. Например, так:

public class PropertiesAwareBean {

  @Value("${PATH_ERROR}")
  private String errorPath;

  String getErrorPath() {
    return errorPath;
  }

}

Если вы хотите расслабить PropertyPlaceholder и не заставлять его генерировать исключение, когда свойство не может быть разрешено, вы можете настроить PropertyPlaceholder так, чтобы он игнорировал неразрешимые свойства, подобные этому .

6
ответ дан 5 December 2019 в 21:17
поделиться

Я не уверен, что полностью понимаю вашу проблему, но, вероятно, есть несколько способов решения этой проблемы. Можно было бы сделать пути обязательными с помощью внедрения конструктора. Затем в конструкторе вы можете проверить входящие значения и, например, если null, выбросить экземпляры BeanInitializationException.

0
ответ дан 5 December 2019 в 21:17
поделиться

One способ усилить проверку параметров - переключиться на классический bean-компонент PropertyPlaceholderConfigurer в вашем файле beans.

PropertyPlaceholderConfigurer имеет свойства, которые можно использовать для настройки его поведения и указать, будет ли генерироваться исключение или нет, если какой-либо ключ отсутствует (см. setIgnoreUnresolvablePlaceholder или ] setIgnoreResourceNotFound ).

Если я правильно помню, в Spring 2.5 поддерживается только атрибут местоположения для (хотя все могло измениться).

1
ответ дан 5 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: