DevBoi

@SessionAttribute에 대해서 본문

Develop/[Spring]

@SessionAttribute에 대해서

HiSmith 2022. 4. 29. 14:46
반응형

 

 

 

이전에 공부한 ModelAttribute는, 전달 받은 값도탐색을 하지만, 세션에 있는 값도 탐색을 한다.

해당 과 같이 작성을 하면 Model 객체에 저장시 세션에 저장될 key을 저장한다.

즉 model에 test라는 값을 넣으면 자동으로 세션에 넣어준다.

해당 과 같이 사용하면, modelAttribute로 세션에 있는 값도 탐색을 한다.

 

처음 호출할때 오류가 발생할 수있지만

별도 ModelAttribute메서드를 선언하게 되면, 해당 메서드 별 인터셉트 같이 베이스로 돌기때문에 값을 넣어줄수있다.

 

만약에 모든 세션이 종료되면,

SessionStatus 객체의 setComplete를 활용하여 지울 수 있다.

 

@SessionAttributes는 해당 컨트롤러 내에서만 동작한다.

해당 컨트롤러 안에서 다루는 특정 모델 객체를 세션에 넣고 공유할때 주로 사용한다.

 

정리해서 말하면 SessionAttribute는 model에 있는 값을 세션에 편하게 넣어주고, modelAttribute로 값을 탐색할때 세션에 대해서도 검색하기 때문에 편하게 관리를 연동해주는 것이다.

또한 해당 컨트롤러 내에서만 동작한다. 

 

@SessionAttribute

-컨트롤러 밖에서 만들어준 세션데이터에 접근 할 때 사용한다.

 

@SessionAttribute는, Controller밖에서 만들어준 Session 데이터에 접근할 때 사용한다. (Interceptor, FIlter등)

 

Session은 여러 화면이나 요청에서 사용해야하는 객체를 공유할 때 사용할 수 있다.

HttpSession으로 객체를 값을 넣어줄수도있고, 사용할 수도 있다.

 

해당 HttpSession보다 더 추상화된 방법으로 사용되는 것이 SessionAttribute이다.

 

HttpSession은 한번 형변환이 필요하여 번거롭지만, @SessionAttribute는 바로 사용할 수 있다는 장점이 있다.

 

반응형

'Develop > [Spring]' 카테고리의 다른 글

[Spring] HandlerInterceptor  (0) 2022.05.03
[Spring] ControllerAdvice  (0) 2022.05.02
[Spring] static 과 스프링 빈의 차이  (2) 2022.04.29
[Spring] ModelAttribute  (0) 2022.04.28
[Spring] 웹 통신 , 스프링 동작 과정  (0) 2022.04.08