我是一個春季範圍的新手。彈簧控制器範圍和存儲會話數據
我有一個這樣的代碼如下
@Controller
public class PageController extends AbstractController {
private ABCManager abcManager;// repository singleton bean.
@Inject
public PageController(final ABCManager accountDiaryManager){
this.abcManager= abcManager;
}
@RequestMapping(value="/createpage",method=RequestMethod.POST)
public @ResponseBody Page createPage(@RequestParam(value="viewtype")final String viewtype, final WebRequest request)
{
final ABC abc= (abc) request.getAttribute(AbstractController.CURRENT_ABC, WebRequest.SCOPE_SESSION);
.........
abcManager.createPage(Long.valueOf(abc.getId()), page);
request.setAttribute("abc", abcManager.getabc(abc.getId()),WebRequest.SCOPE_SESSION);
}
由於ABC對象可以在同一個用戶會話中更改多次爲abc是根對象,包含樹形結構和用戶的行動將在子對象的任何地方涉及變革。因此,當執行編輯時,我將修改過的abc對象保存在請求中,以便每次在請求中都可以使用最新的abc對象。這個abc可能會變得非常大,這是我的擔憂。這是做這種事的好方法嗎?
我想知道這是否是一種很好的做法來編寫這樣的代碼。這是一個線程安全的方式嗎?什麼是最好的替代可用。