ArgumentResolver 활용
ArgumentResolver를 이용해 세션 확인을 좀 더 간단하게 해보자.
@Target(ElementType.PARAMETER)
파라미터에서만 사용할 수 있게 설정
@Retention(RetentionPolicy.RUNTIME)
리플렉션 등을 활용할 수 있게 런타임 내내 애너테이션 정보가 남아있어야 할 때 사용
만든 @Login 애너테이션을 붙여주면 ArgumentResolver가 동작한다.
자동으로 세션에 있는 로그인 회원을 찾아준다.
supportsParameter()
@Login 애너테이션이 있으면서 Member 타입이면 해당 ArgumentResolver가 사용된다.
resolveArgument()
컨트롤러 호출 직전에 호출되어 필요한 파라미터 정보를 생성한다.
즉, 세션에 있는 로그인 회원 정보인 Member 객체를 찾아 반환한다.
이후 스프링 MVC는 컨트롤러의 homeLoginV3ArgumentResolver()를 호출하면서 여기서 반환된 Member 객체를 파라미터에 전달해준다.
항상 등록해주는 것을 잊지 말자.
참고로 여러 번 실행할 때는 캐시가 있어서 supportsParameter()는 한 번만 실행한다.
이렇게 ArgumentResolver를 활용하면 공통 작업이 필요할 때 컨트롤러를 더 편리하게 사용할 수 있다.
Last updated