@Controller
)@Scope("session")
。Serializable
以便在重新启动服务器的情况下可以物理存储它们,例如Serializable
,这意味着它引用的所有服务(其他spring bean)也将被序列化。它们通常是代理,并引用事务管理器,实体管理器工厂等。ApplicationContext
通过实现实现对的引用ApplicationContextAware
,因此这可以有效地意味着整个上下文都已序列化。并且考虑到它拥有许多连接-即无法通过思想序列化的事物,它将以损坏状态恢复。到目前为止,我几乎都忽略了这些问题。最近,我想到了声明我所有的spring依赖项,transient
并readResolve()
通过静态实用程序类将它们重新获得WebApplicationContextUtils
,从而将request
/ ServletContext保留在ThreadLocal
。这很繁琐,但是可以保证在反序列化对象时,其依赖关系将与 当前
应用程序上下文保持“最新” 。
是否对此有任何公认的实践,或者是否有任何序列化spring上下文部分的准则。
请注意,在JSF中,托管bean(〜controllers)是有状态的(与基于动作的Web框架不同)。因此,也许我的问题更多地代表JSF,而不是spring-
mvc。
问题内容: 一个标准的案例-你有一个带有的控制器。 通常希望实现会话中放置的类,以便在重新启动服务器的情况下可以物理存储它们,例如 如果控制器实现,这意味着它引用的所有服务(其他spring bean)也将被序列化。它们通常是代理,并引用事务管理器,实体管理器工厂等。 某些服务,甚至控制器,都不太可能通过实现实现对的引用,因此这可以有效地意味着整个上下文都已序列化。考虑到它拥有许多连接-即无法通过
我使用spring指南中简单REST服务的纯示例代码作为基础:http://spring.io/guides/gs/rest-service/ 我添加了单个Bean配置: 然后,我修改后的控制器如下所示: 而我正在得到 由于呼叫“/问候” 我在这里读了一些描述:http://docs.spring.io/spring/docs/current/spring-framework-reference/
我们知道Spring框架提供了单例、原型、请求、会话、全局会话bean范围。 我们还知道Spring Web流提供了flow Scope、viewScope、Request estScope、flash Scope、versationScope。 因此,如果我在spring MVC项目中提到一个组件,比如说Student,作为@Component@Scope=singleton。对于每个请求,它会
在用户登录时续订HTTP会话是常见的最佳做法。这将强制使用新的会话ID,从而避免会话固定漏洞。 当涉及@SessionScoped bean时,是否有使用CDI实现此功能的首选模式?困难在于,通过使当前HTTP会话无效,您将在下一个请求中获得不同的会话范围bean,但直到下一个请求。 例如,假设一个用于存储用户登录信息的会话bean: 和另一个用于管理登录的bean: 对于托管Bean,这将检索一
我编写了一个会话范围的托管bean,用于在domino xpages应用程序中缓存sesion用户特定的信息,如下代码所示: 然后,我在faces配置中声明了它,使其成为会话范围的bean: 在测试bean时,我通过#{NBUser.fullUserName}使用它,它并不总是返回当前domino http会话上下文的用户,例如,我首先由用户“user1”登录并注销,然后由user2登录,bean
为了一致性和简单性,我想在我的控制器周围传递一个会话范围的域bean,但这似乎不可能。希望有人能提出建议。 问题:会话范围的bean可以作为MVC控制器参数公开吗 这里似乎有一个注释:@SessionAttributes(“myBean”),但是它只维护一个控制器级别的作用域。 我希望避免与HttpSession交互,而是通过控制器一致地传递域对象图。这似乎是一个相当标准的要求。 这有以下好处: