16번째 강의(Spring의 AOP를 이용한 Exception Handling) 관련 문의
530
작성한 질문수 7
비슷한 질문이 있었지만, 원하는 답변이 없어서 다시 질문 드립니다.
16번째 강의(Spring의 AOP를 이용한 Exception Handling)에서 `ResponseEntityExceptionHandler`를 상속 받은 `CustomizedResponseEntityExceptionHandler` 클래스를 생성해서 Exception 핸들링을 해주셨습니다.
그런데, `ResponseEntityExceptionHandler`를 상속 받은 이유를 잘 모르겠습니다.
해당 강의만 봐서는 부모 메소드를 재활용하는 것도 아닌 것으로 보여지고, 실제로 상속을 받지 않더라도 코드는 잘 작동하는 것으로 보여 문의 드립니다.
답변 1
1
안녕하세요, 이도원입니다.
자바에 상속이라는 개념은 어떤 클래스나 인터페이스가 가지고 있는 필드나 메소드와 같은 특징을 그대로 넘겨받아 사용하거나, 재정의해서 사용하겠다는 개념입니다. 특히 인터페이스 같은 경우는 메소드의 처리 내용(Body)이 없이, 메소드의 선언만 존재하기 때문에, 반드시 재정의해서 사용해야 합니다. 그렇다면 왜 인터페이스를 사용할까? 라는 질문부터 생각해 보면 좋을 것 같습니다. 한두개 클래스를 생성하면서 같은 인터페이스를 상속받아 작성하는 경우라면, 굳이 인터페이스 없이 서로간의 약속을 잘 정의한대로 메소드 구현한다면 큰 문제는 없을 겁니다. 다만, 구현해야할 클래스가 많아 지거나, 공통적으로 이름을 변경한다고 할 경우 제대로 모두 적용되었는지 컴파일 시 확인하려면 인터페이스를 사용하는 편이 좋다고 생각됩니다. 이렇듯 상속은 어떤 클래스를 생성함에 있어 필수로 처리해야 하는 작업, 명시해야하는 작업, 강제성을 가지고 구현해야하는 작업을 할 수 있습니다. 질문하신 내용처럼 ResponseEntityExceptionHandler를 명시하지 않고, @Override 속성을 제거한 다음 실행해도 정상 작동될 수 있습니다. 그러나, 스프링에서 빈을 등록하고, 등록된 빈을 검색할 때는 클래스의 이름으로 검색하는 경우도 있지만, 클래스의 타입으로 검색하여 매칭하는 경우도 있습니다. 이럴 경우, ResponseEntityExceptionHandler를 명시해 놓지 않으면, 해당 클래스가 ExceptionHandler라는 것을 별도로 명시하거나 빈 등록시 설정해 줘야 합니다. 말씀하신 상속의 선언은 프로그래밍을 하면서 처리하는 규격 또는 약속 정도라고 이해하시면 좋을 것 같습니다.
추가 질문사항 있으시면 글 남겨주세요.
감사합니다.
JPA
0
71
1
jpa dependency를 추가하고 SecurityConfig클래스에서 오류가 납니다.
0
84
1
웹 브라우저 400 bad request
0
84
1
@Size는 되는데 @Past는 안 됩니다.
0
76
1
pdf 자료는 없나요?
0
92
2
locale 정보가 null 이면 무조건 messages_ko.properties이 호출 되는 문제
0
100
2
Swagger 강의, Unable to infer base url 이거 뜨시는 분들 도움되시라고
0
135
1
강의에서나온 화면 피피티
0
169
1
HelloWorldBean 관련 에러
0
194
2
Swagger API 3.x 오류..
0
230
1
java: variable message not initialized in the default constructor 에러는 어찌하면 좋을까요?
1
289
1
현재 GIT에 올리신 소스를 실행해봤습니다.
0
203
2
고양이 소리가 귀엽네요 !!
0
149
2
git에서 소스받고 실습중인데
0
128
1
post가 안되요
0
116
1
한국어 같은 경우 언어코드인 messages_ko.properties 로 생성하는게 더 좋지 않나요?
0
176
2
리턴타입으로서 EntityModel<User> 와 ResponseEntity질문
0
113
1
예외처리쪽 관련 질문있습니다.
0
165
2
엔티티가 바로 응답으로 나가도 되나요??
0
239
2
안녕하세여 Cannot invoke "co.kr.joneconsulting.resfulservice.repository.PostRepository.save(Object)" because "this.postRepository" is null
0
150
2
사용자 등록하고 나서 H2 에서 보면 신규 사용자의 password, ssn 이 null 로 되어 있습니다.
0
146
2
ApplictionContext 질문
0
199
2
롬북이 안먹히는것같아요
0
161
1
인텔리제이에서스프링부트 파일 실행하면
0
244
1





