私はスプリングスコープの初心者です。
次のようなコードがあります
@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は非常に大きくなる可能性があり、それが私の懸念事項です. このようにするのは良い方法ですか?
これがこのようなコーディングの良い習慣であるかどうかを知りたいです。これはスレッドセーフな方法ですか?利用可能な最良の代替手段は何ですか。