我想知道HttpSession的自动装配是如何工作的。
如果我们声明如下:
@Autowired
private HttpSession httpSession;
完全在Spring工作流程中,上面声明的httpSession变量将使用request.getSession(true)
进行初始化?
答案 0 :(得分:2)
我不明白为什么要自动装配HttpSession,但这是自动装配的工作原理。
要自动化一个类,您需要通过使用注释(@ Controller,@ Service,@ Repository,@ Component)或在config类中声明@Bean将其指定为bean。一旦你定义了一个bean Spring就会在spring上下文初始化时自动装配或构造对象(在webapp的服务器启动期间,你在case console / standalone app中显式初始化spring context)。
由于HttpSession只能从HttpServletRequest对象中获取,因此在应用程序启动期间无法初始化它,因为在启动期间没有HttpServletRequest。如果您想在获取HttpSession之前实现某些逻辑,则可以创建一个像这样的util方法
public getHttpSession(HttpServletRequest request) {
// put your logic here and return session object
}