У меня есть файл 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 для каждого пути.
Проблема: когда некоторые из тех обязательных путей не определяются, никакая ошибка не брошена. Как и где я должен решить эту проблему?
Стандартное поведение PropertyPlaceholder, которое настраивается через
генерирует исключение, когда свойство не может быть разрешено, если оно требуется в каком-то месте, если вы не настроите его иначе.
В вашем случае, если у вас есть объект Bean, для которого требуются такие свойства, он завершится ошибкой, если значение не может быть определено. Например, так:
public class PropertiesAwareBean {
@Value("${PATH_ERROR}")
private String errorPath;
String getErrorPath() {
return errorPath;
}
}
Если вы хотите расслабить PropertyPlaceholder и не заставлять его генерировать исключение, когда свойство не может быть разрешено, вы можете настроить PropertyPlaceholder так, чтобы он игнорировал неразрешимые свойства, подобные этому
.
Я не уверен, что полностью понимаю вашу проблему, но, вероятно, есть несколько способов решения этой проблемы. Можно было бы сделать пути обязательными с помощью внедрения конструктора. Затем в конструкторе вы можете проверить входящие значения и, например, если null, выбросить экземпляры BeanInitializationException.
One способ усилить проверку параметров - переключиться на классический bean-компонент PropertyPlaceholderConfigurer в вашем файле beans.
PropertyPlaceholderConfigurer
имеет свойства, которые можно использовать для настройки его поведения и указать, будет ли генерироваться исключение или нет, если какой-либо ключ отсутствует (см. setIgnoreUnresolvablePlaceholder
или ] setIgnoreResourceNotFound
).
Если я правильно помню, в Spring 2.5 поддерживается только атрибут местоположения для
(хотя все могло измениться).