私はユーザークラスを持っています:
@Component
@Scope("session")
public class User {
private String username;
}
そしてコントローラークラス:
@Controller
public class UserManager {
@Autowired
private User user;
@ModelAttribute("user")
private User createUser() {
return user;
}
@RequestMapping(value = "/user")
public String getUser(HttpServletRequest request) {
Random r = new Random();
user.setUsername(new Double(r.nextDouble()).toString());
request.getSession().invalidate();
request.getSession(true);
return "user";
}
}
次回/usersにアクセスしたときに別のユーザーを取得できるように、セッションを無効にします。ユーザーのセッション スコープのために別のユーザーを期待していますが、同じユーザーを取得します。デバッグ モードでチェックしたところ、メモリ内の同じオブジェクト ID です。私のBeanは次のように宣言されています:
<bean id="user" class="org.synchronica.domain.User">
<aop:scoped-proxy/>
</bean>
私は春が初めてなので、明らかに何か間違っています。セッションごとに User のインスタンスが 1 つ必要です。どのように?