我在Spring 3中尝试使用会话范围的bean.我有以下bean定义:
<bean id="userInfo" class="net.sandbox.sessionbeans.UserInfo" scope="session" />
Run Code Online (Sandbox Code Playgroud)
这是net.sandbox.controllers.RegistrationController一个需要访问这个bean的控制器类.为了简洁起见,我已经取出了进口产品.
@Controller
@RequestMapping("/register")
public class RegistrationController {
private UserInfo userInfo; // This should reference the session-scoped bean
@RequestMapping(method = RequestMethod.GET)
public String showRegForm(Model model) {
RegistrationForm regForm = new RegistrationForm();
model.addAttribute("regform", regForm);
return "regform";
}
@RequestMapping(method = RequestMethod.POST)
public String validateForm(@Valid RegistrationForm regForm, BindingResult result, Model model) {
if (result.hasErrors()) {
return "regform";
}
userInfo.setUserName(regForm.getFirstName());
model.addAttribute("regform", regForm);
return "regsuccess";
}
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法能够自动配合我定义为成员变量会话范围的bean private UserInfo userInfo的RegistrationController?
是 - 请参阅Spring手册的第3.4.5.4节"作为依赖关系的范围内的bean".
简而言之,您可以要求Spring将会话范围的bean包装在单例代理中,该代理在调用scoped bean上的方法时查找正确的会话.这称为"范围代理",并使用<aop:scoped-proxy>配置宏.然后,您可以像任何其他(例如<property>,或@Autowired)一样注入引用.有关详细信息,请参阅上面的链
| 归档时间: |
|
| 查看次数: |
16021 次 |
| 最近记录: |