springboot httpsession autowired

在Spring Boot应用中,我们可以通过 @Autowired 注解来注入会话(session)对象。

要使用会话对象,我们需要将HttpServletRequest对象传递给方法,可以在方法中使用 @Autowired 注解来注入HttpServletRequest对象,然后使用 getSession() 方法获取会话对象,例如:

@Controller
public class MyController {
    @Autowired
    private HttpServletRequest request;
    @RequestMapping("/foo")
    public String foo() {
        HttpSession session = request.getSession();
        session.setAttribute("foo", "bar");
        return "foo";

在上面的代码中,我们通过HttpServletRequest对象获取会话对象,并将foo属性设置为bar

需要注意的是,我们应该避免直接依赖HttpServletRequest对象,在Spring应用程序中,我们可以使用Spring提供的RequestContextHolder类来从任何线程中获取当前HttpServletRequest对象。这可以避免直接与HttpServletRequest对象交互,并使我们的代码更具可测试性和灵活性。例如:

@Controller
public class MyController {
    @RequestMapping("/foo")
    public String foo() {
        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
        HttpSession session = request.getSession();
        session.setAttribute("foo", "bar");
        return "foo";

在上面的代码中,我们使用RequestContextHolder来获取当前HttpServletRequest对象,并使用它来获取会话对象。

  •