프로그래밍/JAVA Spring

[Spring 스프링] HandlerInterceptorAdapter 말고 HandlerInterceptor

hectick 2023. 5. 7. 15:59

 

 

'org.springframework.web.servlet.handler.HandlerInterceptorAdapter' is deprecated

 


 

HandlerInterceptorAdapter를 상속해서 인터셉터를 구현하고 있었는데, 노란색 블러가 거슬렸다.

 

 

스프링 5.3 버전 이상부터는 권장되지 않는다고 한다. 대신 HandlerInterceptor 또는 AsyncHandlerInterceptor 인터페이스를 직접 사용하라고 적혀있다. 참고로 HandlerInterceptorAdapter는 AsyncHandlerInterceptor를 구현한 것이다. 

 

그나저나 @Deprecated 어노테이션으로 인해 노란 블러로 경고가 뜬 건가보다. 신기방기

그리고 안에 뭐 따로 구현된 것도 없다. @Deprecated 하면서 다 지워버린건지

 

스택오버플로우에 따르면 자바8부터 인터페이스에서 디폴트 메서드를 정의할 수 있게 되었고, 이에 따라 따로 인터페이스를 구현하는 추상 클래스를 만들어 디폴트 메서드를 만들어줄 필요가 없어졌으며, 추상클래스인 HandlerInterceptorAdapter 대신 바로 인터페이스로 구현할 수 있게 된 것이라 한다!

 

AsyncHandlerInteceptor도 타고 들어가 봤는데, 이건 HandlerInterceptor의 기능에다가, afterConcurrentHandlingStarted라는 디폴트 메서드를 추가한 것이었다. 대충 비동기 요청을 처리할 때 사용한다고 한다. 비동기 요청이 뭔지는 나도 모른다.

 

 

어쨌든 나에게 필요한 것은 prehandle 메서드 뿐이니까 최종적으로 HandlerInterceptor로 구현해버렸다.