java - 在 Springframework 2.5.6 中是否有可能在 ="session"范围内创建 session 创建对象

标签 java spring session aop

我有一个使用 Jetspeed 门户和 Springframework 2.5.6 的项目,我需要 Jetspeed 级别的服务对于每个登录用户都是唯一的。这最好使用 Spring AOP 和 scope="session"来完成。问题是,这些是在 session 启动后需要立即运行的幕后 bean。看起来 Spring 的 AOP 选择了延迟加载设计,直到调用 bean 上的方法时才创建或初始化实际实现。

有没有办法强制 Spring AOP 在创建 session 对象后立即创建新 bean?

最佳答案

一个很好的问题。想到的最简单的选择(如果你会原谅这个表达式)是将你的 session 范围的 bean 连接到当 session 的第一个请求进入时调用的 Controller (并且为了做到这一点, Controller 必须要么是 session 范围的 bean 本身,要么您的 bean 需要使用 aop:scoped-proxy)。

如果在 session 开始时可以调用不同的 Controller ,那么您可以将 bean 连接到一个 session 范围的拦截器中,并配置您的 url 映射以通过拦截器传递请求,确保 bean 被正确初始化在 session 开始时。

我真的想不出更优雅的方法来做到这一点。您可能会创建一个自定义 HttpSessionListener,它在 sessionCreated() 时在应用上下文中调用 getBean("my-session-scoped-bean")被调用,但这有点笨拙。

关于java - 在 Springframework 2.5.6 中是否有可能在 ="session"范围内创建 session 创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1493080/

相关文章:

java - Struts 2操作调用丢失xwork i18n语言设置

java.lang.illegalargumentException 没有为该名称定义查询[...]

java - persistence.xml 使用 java 配置

mysql - 将 Grails 与 PostgreSQL 一起使用时出现 org.hibernate.StaleObjectStateException

java - Struts 应用程序中的 session 处理

java - JEXL - 如何获取未知变量的所有警告消息?

java - 为什么仅当我的 Controller 具有@RequestMapping (produces = ...) 时,Spring 的 HandlerInterceptorAdapter 才会被调用两次?

java - 在抽象类中定义的 Spring Autowiring 依赖项

java - JSP session 异常行为

javascript - ngStorage AngularJS 从 sessionStorage 读取由另一个库保存的内容