@Autowired在这段代码中做了什么

时间:2012-12-19 06:28:51

标签: java spring spring-mvc

需要了解@Autowired在此代码中执行的操作。我对scope=session感到困惑?这是否意味着现在user中可以使用HttpSession?如何从HttpSession检索它?如果我删除了redirectAttrs.addFlashAttribute("user", user);,那么我在JSP页面中看不到该用户?

用户类及其映射如下

<bean id="user" class="example.User" scope="session">
  <aop:scoped-proxy/>
</bean>

下面的控制器重定向到另一个控制器,该控制器除了登陆页面的位置之外不包含任何内容.jsp

@Autowired
@Qualifier("user")
private User user;

@RequestMapping(method=RequestMethod.POST)
public String post(@ModelAttribute User user, BindingResult result, SessionStatus status, final RedirectAttributes redirectAttrs) {
    logger.info("post");
    new UserValidator().validate(user, result);
    if (result.hasErrors()) {
        return "login";
    }
    else {
        status.setComplete();           
        logger.info("Email Id: " + user.getEmailId());          
        redirectAttrs.addFlashAttribute("user", user);          
        return "redirect:/landing.htm";
    }
}   

1 个答案:

答案 0 :(得分:2)

范围会话意味着将保留用户对象,直到客户端会话被销毁。这并不意味着你在HttpSession对象中拥有它。 @Autowired注释用于自动连接用户bean。它用于从应用程序上下文中获取bean并将其分配给Java类中的本地变量。