Рассматривая путаница в отношении сессионного боба, прокси и синглтонов в приложении Spring 3 Управляемое JSF

StackOverflow https://stackoverflow.com/questions/4651782

Вопрос

Это похоже, что это базовая весной 101 материал, но я не могу найти верный способ сделать это. Ситуация выглядит следующим образом; В моем веб-приложении есть одна точка входа, которая является контроллером, который обрабатывает пользователей, исходящих из внешней системы. Передача просто POST запрос с группой связанной информации, относящейся к тому пользователю. Вход APON, мне нужно создать новый пользовательский компонент и загрузить его с помощью этой информации пользователей. Кроме того, когда пользователь ударяет представление, которое вызывает некоторую службу, мне нужно для этой услуги, чтобы иметь возможность получить доступ к соответствующему экземпляру пользователя.

Первый способ сделать это, что пришло в голову, имел возможность иметь службу USERMANAGER, которая создаст новый экземпляр пользователя, заполните его с данными, а затем зарегистрируйте его в контейнере пружины с именем пользователя в качестве имени фасоли. Затем, когда сервис вызывается, сервис сделает что-то вроде Factory.getBean(username) найти соответствующий User экземпляр. Проблема, которую я вижу вот то, что я теряю связь между пользователем и какой User боба принадлежит им. Кроме того, я хотел бы избежать того, чтобы пользователь нести боб в сеансе, если вообще возможно. Это где я должен использовать весна AOP & Proxies?

Что такое типичный весенний шаблон для решения этого типа ситуации?

Это было полезно?

Решение

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

Основной ответ: использовать прокси. Поскольку Singleton только мгновенно 1 раз, вы не можете вводить другой класс, который имеет более короткий срок службы, например. Сфера сессии. Для тех, кто требует большего количества информации, оформить заказ состояния против синхронизации. Более или менее то, что я в итоге делал, это ... Услуги содержат код без гражданства для манипулирования данными (думаю, глаголы; RegisterUsersvc, addpartsvc, и т. Д.). Данные, которые эти услуги манипулируют, являются штатными. Например, у каждого пользователя есть собственная копия собственного объекта данных, позволяет сказать TOListBean, который находится в другом состоянии для каждого пользователя.

Итак, как работает сервис, AddtodoItemservice, манипулирует этими данными? Это где прокси вступает в игру. При создании экземпляра Addtodoitemservice вводится с прокси-сервером для тодолистского моря вместо фактического объекта. Таким образом, когда служба должна получить доступ к тодолистскому контейнеру, контейнер будет служить a toListbean из текущих сеансов пользователей, и поэтому сервис будет работать на правильном бобовом бону (на основе которого пользователь вызывал сервис), а не делать что-то Глупая как многочисленные копии службы, включенные в каждую область сеанса пользователей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top