从静态方法中获取会话属性

时间:2014-10-26 18:45:39

标签: java spring

我使用下面的代码从session util类中获取会话属性(包含静态方法)。想知道下面的代码在多线程环境中可能是正确的方法,还是有更好的其他方法从util获取会话。

public static HttpSession getSession(){
    ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
    HttpSession session = attr.getRequest().getSession();
    return session;
}
public static String getEmailIDFromSession(){
    return (String)getSession().getAttribute("USER_EMAIL");
}

1 个答案:

答案 0 :(得分:1)

不,没关系。它确实是线程安全的。但是从另一方面来说,你应该明白它只能在HTTP请求线程和Spring MVC环境中使用。

从另一方面来说,如果您想从@Controller@Service获取该属性,那么您始终可以inject进行会话:

@Controller
class MyController {

  @Autowired
  private HttpSession session;

}