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