inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 웹 MVC

핸들러 메소드 8부 @SessionAttributes

SessionStatus Interface에 대한 고찰입니다.

해결된 질문

340

Henu

작성한 질문수 66

1

안녕하세요.

'핸들러 메소드 8부 - @SessionAttributes' 강의를 듣고,

Spring에서 제공하는 @SessionsAttributes 어노테이션, SessionStatus  Interface는 HttpSession을 좀 더 편리하게 사용 할 수 있는 도구라고 생각이 들었습니다.

강의 후반부에 나오는 SessionsStatus Interface에 대해 세 가지 궁금증이 생겨 글을 남깁니다.

첫 번째

만약, 메소드 실행 후

Session에 담긴 특정 객체(Attribute)를 제거해야 할 때 HttpSession이 제공하는 removeAttribute() 또는 invildate() 메소드가 아닌,

SessionStatus의 setComplete()을 사용하는 이유는 Spring이 제공하는 도구를 활용하기 위한 목적이라고 보면 될까요?

(이 두 인터페이스의 공통점은, 사용 전에 메소드 파라미터로 설정이 되어야 한다는 점이겠네요.)

두 번째

SessionsStatus interface는 단지 '메소드 선언'만 되어 있어서 setComplete() 메소드가 어디서 '오버라이드' 되어 동작을 하는 것인지에 대한 궁금증입니다.

내용은 아래와 같습니다.

SessionStatus의 setComplete() 메소드를 호출하게 되면

Session에 담긴 모든 객체가 비워지게 되는 것인지, @SessionAttributes 어노테이션에서 지정한 객체에 대해서만 제거가 되는 것인지 궁금합니다.

(지졍한 객체라 함은, 강의에서는 'event' 객체가 되겠네요.)

세 번째 

기본적인 질문일 수도 있겠습니다.

대게 회원 로그인 처리 후 다른 페이지에서도 회원 정보를 접근 가능 하도록 Session에  회원정보를 담게 됩니다.

가령 개발자의 실수로 '세션에 있는 회원정보를 제거하면 안되는 어느 메소드'에서 회원정보를 지우는 작업을 했을때 

'이 코드(회원정보를 지우는 작업)는 여기서 실행되면 안돼.' 라는 의미로 예외를 발생시키는 코드 패턴이 있을까요?

spring MVC java

답변 1

2

백기선

첫번째, 그렇지 않습니다. SeesionStatus는 세션에 넣어둔 모델 객체를 정리하는데 쓰는거지 일반적인 세션을 전부 비우는데 사용하는게 아닙니다.
두번째, 스프링 소스 코드와 디버거를 사용해 보세요. SeesionStatus 구현체를 찾아서 디버거를 걸고 언제 사용되는지 살펴보세요.  @SessionAttributes로 지정한 것만 제거됩니다.
세번째, 글쎄요. 테스트와 코드리뷰로 잘 커버해야 하지 않을까 싶네요.

정리해주신 질문들은 대부분 직접 학습을 통해 알아내시거나, 코딩을 통해 검증해 볼 수 있는 내용들입니다. 저에게 질문을 통해 해결하기 보다는 직접 알아보는 노력을 좀 더 하셨으면 좋겠습니다.

감사합니다.

7:58 예제 코드 찾는 법

0

256

2

PATCH의 Idempotent에 대한 질문

0

257

1

2:51초 질문입니다.

0

324

1

만약 어플리케이션컨텍스트에 필터를 설정하지 않으면 어떻게되나요?

0

361

0

web.xml에 위치한 애플리케이션 web.xml 내에서 파싱 오류 발생

0

515

0

Spring Boot 2.6 이상 버전에서의 DispatcherServlet

0

366

1

Event`Xxx`Controller 분리할때의 기준에 관한 질문입니다.

0

634

1

11분 57초 쯤, `returnValueHandlers` 들의 네이밍컨벤션 관련 질문입니다.

0

379

1

@EnableWebmvc 설정을 하면

0

415

1

springframework와의 차이점

0

283

1

@RequestBody의 바인딩에러를 잡는 방법

1

1655

2

안녕하세요 기선님 강의를 보다 서블릿에 궁금증이 생겨 질문 드립니다

1

237

1

HelloService의 값을 전달을 못 받습니다.

0

296

1

ServletContext와 WebApplicationContext의 관계 질문

1

740

1

하나의 서비스에, 두개의 리포지토리도 연결이 되나요?

0

364

1

view name 리턴에 대해

0

290

2

Formatter print 질문 드립니다.

0

232

1

에리 메시지가 한글입니다.

0

294

1

java 클래스파일로 설정되어 있던 것을 web.xml로 바꾸는 경우

0

338

1

@RequestParam

0

255

1

@Retention 질문

0

229

1

Event.builder() 관련 mac에서 lombok 문제 있으신 분들

0

198

1

스프링 부트 사용시 WebMvcConfigurerSupport 클래스

0

253

1

http://localhost:8080/hello 입력시 오류

0

492

4