【问题标题】:Spring MVC: How autowiring of HttpSession works?Spring MVC:HttpSession 的自动装配如何工作?
【发布时间】:2016-12-15 14:54:27
【问题描述】:

我想知道 HttpSession 的自动装配是如何工作的。

如果我们像下面这样声明:

@Autowired 
private HttpSession httpSession;

当恰好在 Spring 工作流程中时,上面声明的 httpSession 变量将被初始化为 request.getSession(true)?

【问题讨论】:

  • 不确定,为什么人们不理解就否决了一个问题??

标签: spring model-view-controller autowired httpsession


【解决方案1】:

我不明白你为什么要自动装配 HttpSession,但这里是自动装配的工作原理。

要自动装配一个类,您需要通过使用注释(@Controller、@Service、@Repository、@Component)或通过在配置类中声明@Bean 将其指定为 bean。一旦你定义了一个 bean,Spring 会在 spring 上下文初始化时自动装配或构造对象(在 webapp 的服务器启动期间,你显式地初始化 spring 上下文以防控制台/独立应用程序)。

由于 HttpSession 只能从 HttpServletRequest 对象中获取,因此在应用程序启动过程中无法对其进行初始化,因为启动过程中没有 HttpServletRequest。 如果您希望在获取 HttpSession 之前实现一些逻辑,您可以创建一个像这样的util方法

public getHttpSession(HttpServletRequest request) {
    // put your logic here and return session object 
}

【讨论】:

  • Autoriwing HttpSession 是从不同类访问会话的最便捷方式。如果 Autowiring httpsession 有很多帖子,包括这个,stackoverflow.com/questions/29487885,将失效
  • 如果可行就方便了。我已经用粗体解释了它不可行的原因。让我们知道您是否想出了一种自动装配 HttpSession 的方法。
猜你喜欢
  • 2011-03-10
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 2019-10-21
  • 1970-01-01
相关资源
最近更新 更多