質問内容
- Tomcatでのセッション管理について、sessionからgetAttributeしたオブジェクトへの変更は、setAttributeしなくても反映されるのはなぜでしょうか。
- Redisでのセッション管理について、sessionからgetAttributeしたオブジェクトへの変更は、setAttributeしないと反映されないのはなぜでしょうか。
前提
SpringBootを使用しています。
Tomcatでのセッション管理からRedisでの外部セッション管理に移行したことでエラーが発生した箇所があり、質問させていただきます。
例
java
1//"user"というキーでuserオブジェクト(nameはJohn)がセッションに保存されている前提 2 3// セッションからオブジェクトを取得 4User user = session.getAttribute("user"); 5 6// オブジェクトのフィールドを変更(John→Jane) 7user.setName("Jane");
以降、上記処理はリターンした後、別画面からのリクエストでの処理
java
1// セッションからオブジェクトを取得 2User sessionUser = (User) session.getAttribute("user"); 3 4System.out.println(sessionUser.getName()); 5// Tomcat:Jane と出力される 6// Redis :Johnと出力される
補足
setAttributeをすれば反映されるのは理解しております。
Tomcatの場合はなぜsetAttributeしなくても反映されるのか というのが質問内容です。
(Tomcatの場合メモリ上に管理されているからgetしたオブジェクトがそのままsessionへ繋がっているというような理由だと推測しております)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/09/05 11:51