Как обрабатывать внешне сохраненные значения по умолчанию в доменном классе - PullRequest
2 голосов
/ 20 июля 2011

Я хочу иметь возможность устанавливать значения по умолчанию для некоторых полей в моих классах домена. До сих пор у меня был класс, в котором сохранялась Карта настроек для всего моего проекта, с целью переместить эту карту в базу данных Redis. Настал день, и я переместил все данные в redis и создал хороший пружинный компонент для получения / установки значений. Тем не мение... кажется, что значения по умолчанию устанавливаются на экземпляре класса домена, прежде чем бин вводится. Этот вид ломает весь процесс. Также ... есть проблема с юнит-тестами. Я создал класс, который реализует тот же интерфейс, что и пружинный компонент, и содержит тестовые значения. Я хотел внедрить его в классы домена, но это тоже не получается.

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

Ответы [ 2 ]

0 голосов
/ 26 ноября 2011

Что я сделал в итоге: Я создал класс, который подключается к Redis и получает все необходимые данные. Для модульного тестирования я создал копию этого класса, он реализует тот же интерфейс, но вместо того, чтобы получать данные из Redis, он имеет простую карту и получает оттуда данные. В конце концов, он действует так же, но данные хранятся внутри. Поэтому в своих модульных тестах я просто внедряю эту версию модульного теста этого класса, где это уместно.

Вероятно, не лучшее решение, которое есть, но оно работало для меня в течение последних нескольких месяцев.

0 голосов
/ 25 ноября 2011

Существует несколько различных подходов:

  • Введите отдельный компонент со значениями по умолчанию, чтобы они предоставлялись таким же образом, как и раньше.В отдельном контексте более высокого уровня или позже при запуске приложения вы можете переопределить определение компонента с помощью определения, получаемого из базы данных
  • . Используйте BeanPostProcessor или BeanFactoryPostProcessor, чтобы указать значения по умолчанию, а затем использовать новый компонентдля получения новых значений

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

...