스프링에서 예외발생은 어느 계층에서 이루어져야할까?
Controller? Service? Repository? ...
결론부터 말하자면
모든 계층에서 발생할 수 있다.
단, 예외의 유형을 정의하는것은 바람직하다.
가령 권한(401)에 대한 검증은 컨트롤러, 유효성(404)에 대한 검증은 서비스 처럼 말이다.
객체지향적 관점으로 봤을 때 해당 클래스가 객체로써 올바르게 작동할 수있는가? 를 따져보아 개발자가 직접 선택하면 된다.
Question.만약 권한에 대한 검증을 서비스에서 한다면?
Answer. 권한에 대한 검증을 서비스에서 진행한다면 해당 서비스를 다른 컨트롤러 또는 서비스에서 이용함에 있어 권한문제를 통과하지 못할 수 있다는 불확실성이 생긴다. 반드시 권한이 있는 유저가 그 서비스 메소드를 호출한다면 문제가 없겠지만, 이를 보장할 수 없고 결국 코드를 수정하게 될 가능성이 매우 높다. 차라리 이 예외처리를 컨트롤러로 넘김으로써 각 기능에 개별적인 권한 예외처리를 하는것이 더 적합하다.
위의 질문-답변은 예시일 뿐 실제로 그렇게 적용해야할지 말아야할지는 개발자가 본인의 프로젝트에 적합한지 아닌지를 따져서 직접 결정해야한다. 핵심은 본인 프로젝트를 이해하고 어떤 구조가 더 적합할지 심도있게 고민을 해보아야 한다는 것이다.
끗
반응형
'컴퓨터과학 > Spring' 카테고리의 다른 글
Firebase Cloud Message(FCM) 스프링 부트 프로젝트에 적용하기 (0) | 2022.06.20 |
---|---|
[Spring]Jenkins로 ec2 서버에 원격 배포하기 (publish over ssh 없이) (0) | 2022.01.19 |
[Spring] DTO의 객체변환은 어느 계층에서 하는것이 적절할까? (0) | 2021.08.06 |
[Spring] 페이지 리로드(새로고침)시 발생하는 데이터 중복전송 현상 방지 (0) | 2021.04.15 |
[Spring] 스프링(Spring) 이란? (0) | 2020.12.29 |