我不完全了解何时使用@SessionAttributes
vs @Scope("session")
bean。
目前,我正在做以下
@ControllerAdvice(assignableTypes = {DashboardController.class, FindingWholeSalersController.class})
public class AuthControllerAdvice {
private IFindWholeSalerService service;
public IFindWholeSalerService getService() {
return service;
}
@Autowired
public void setService(IFindWholeSalerService service) {
this.service = service;
}
//put firstname in session etc..
@ModelAttribute
public void addWholesalerDiscoveryCountToSession(Model model, Principal principal){
if (!model.containsAttribute("firstname")) {
String firstname = service
.findUserFirstName(principal.getName());
model.addAttribute("firstname",
firstname);
}
}
如果测试if (!model.containsAttribute("firstname"))
,请注意这一点
基本上,如果会话属性已经在模型中,那么我不想让我的服务层发出数据库请求。但是,我建议的任何控制器中的每次@RequestMapping
呼叫都会先打电话给
@ModelAttribute
public void addWholesalerDiscoveryCountToSession(Model model, Principal principal)
是否测试,并按其结婚方式移动。
这是将数据保存在会话中的正确解决方案,这样您就不必调用数据库,或者@Scope("session")
bean是更好的选择还是别的?
提前感谢所有建议!