Использование Spring IOC, когда требуется постепенный или итеративный ввод данных пользователем? - PullRequest
0 голосов
/ 31 мая 2011

У меня есть настольное приложение, которое я хочу перенести в Spring (3.0.5), которое включает в себя «шаги», когда пользовательские решения необходимы, прежде чем могут быть созданы определенные объекты (или bean-компоненты).

Гипотетический пример: Предположимприложение позволяет пользователю конвертировать почтовые ящики из программы чтения почты.

  1. Пользователь выбирает каталог,
  2. Приложение анализирует файл метаданных в каталоге
  3. Пользователь выбирает файл из предоставленного набора допустимых файлов «почтового ящика»
  4. Приложение анализирует сведения об исходном файле, чтобы определить соответствующие настройки вывода по умолчанию
  5. Пользовательский каталог назначения и параметры вывода, настроенные пользователем
  6. Приложение выполняет преобразование и сохранение

Из того, что я могу сказать, кажется, есть несколько вариантов способов справиться с этим весной:

  1. Создать набор вложенных (родительский/ child) ApplicationContext объектов по мере поступления необходимой информации.
  2. Создайте несколько «содержащих данные» bean-компонентов и полагайтесь на то, что они просто не вызывают определенные пути кода, пока они могут быть «пустыми».Например: если у меня есть бин WriteToFile, которому нужен выбранный пользователем пункт назначения File, измените его, чтобы вместо него потребовался FileHolder, который запрашивается при вызове WriteToFile.go().
  3. Использованиенекоторая комбинация lazy-init, scope="prototype" и MethodInvokingFactoryBean, так что "более поздние" bean-компоненты инициализируются лениво только тогда, когда доступна исходная информация (о других bean-компонентах).

Кто-нибудь из них кажется лучше других?Я пропускаю опцию?

Прямо сейчас # 3 с небольшим количеством звуков # 1 предпочтительнее.

...