Синглтон и сфера - PullRequest
       28

Синглтон и сфера

1 голос
/ 08 марта 2011
<bean id="userFacade" class="com.test.facade.UserFacadeImpl">
            <property name="userDao" ref="userDao"/>
            <property name="currentUser" ref="user"/>
</bean>
<bean id="user" class="com.test.beans.User" scope="session">
    <aop:scoped-proxy/>
</bean>

UserDao и пользователь передаются ему - пользователь является областью видимости и фасадом синглтона. Таким образом, любой запрос к userfacade будет возвращать один и тот же объект, но пользователь будет отличаться для каждого сеанса - концепция сеанса внутри синглтона меня смущает. Может кто-нибудь объяснить?

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

«прокси-сервер» - это прозрачная оболочка для вашего User боба.Когда метод на этом прокси вызывается, он ищет текущий HttpSession, используя механизм локального потока Spring (называемый RequestContextHolder), и затем выбирает объект User из атрибутов сеанса.Если в этом сеансе ничего не существует, новый создается и сохраняется в сеансе.Затем вызывается «реальный» метод для этого User.

Большое предостережение с прокси с областью действия состоит в том, что методы прокси могут вызываться только в том случае, если область действия «активна», например, если текущий выполняющийся поток являетсязапрос сервлета.

1 голос
/ 08 марта 2011

Экземпляр User, внедренный в UserFacadeImpl, является прокси-сервером, который делегирует вызовы метода фактическим экземплярам области действия User.

См. Также:

...