@SessionAttributes를 사용하는 Spring @Controller는 stateful/multi-post 형식을 처리하도록 설계되었습니다.
이러한 @Controller는 지정된 @SessionAttributes를 사용하여 요청 간에 서버에 데이터를 저장합니다.
해당 데이터는 세션이 끝나면 정리되어야 하지만 @RequestMapping 메서드에서 SessionStatus 객체에 대해 setComplete()가 호출되지 않는 한 Spring 이나 JVM 에서 해당 데이터를 정리할 수 없습니다.
SessionStatus 개체는 해당 메서드에 매개 변수로 전달되어야 합니다.
규칙을 어긴 코드
@Controller
@SessionAttributes("hello") // 규칙을 어긴 코드; 여기는 정리되지 않습니다.
public class HelloWorld {
@RequestMapping("/greet", method = GET)
public String greet(String greetee) {
return "Hello " + greetee;
}
}
규칙을 준수한 해결책
@Controller
@SessionAttributes("hello")
public class HelloWorld {
@RequestMapping("/greet", method = GET)
public String greet(String greetee) {
return "Hello " + greetee;
}
@RequestMapping("/goodbye", method = POST)
public String goodbye(SessionStatus status) {
//...
status.setComplete();
}
}
If you like SONARKUBE, don’t forget to give me a star.