
default 메소드란? ★
인터페이스에 새로운 메소드를 추가하면서 기존에 이 인터페이스를 구현한 모든 클래스들이 해당 메소드를 구현하도록 강제하지 않아도 됨!!!
[ 인터페이슨데 왜 메서드를 강제하지 않아도 오류가 안 나지? ]


HandlerInterceptor 인터페이스에 정의된 메소드들이 default 키워드를 사용하기 때문!! HandlerInterceptor 인터페이스에서는 preHandle, postHandle, afterCompletion 세 가지 메소드를 제공. 이 중에서 특정 메소드만 구현하고 싶은 경우, 나머지 메소드는 기본 구현을 그대로 사용할 수 있다. 따라서 전처리(preHandle)만 하고, 후처리를 안 하고 싶다면, default 덕분에 메소드 강제가 되지 않아 해당 메소드만 오버라이드하고 나머지는 기본 구현을 사용하면 된다!!!
[ 예시 ]

나는 청소 interface 중에서 before만 하고, after은 구현 안 하고 싶은데 인터페이스라 메소드 강제가 안되면 오류가 남...
그럴 때 default를!!

default void after 이라 after 메소드를 필수적으로 오버라이드할 필요가 없게 됨!
Share article