스프링에서 예외발생은 어느 계층에서 이루어져야할까? Controller? Service? Repository? ... 결론부터 말하자면 모든 계층에서 발생할 수 있다. 단, 예외의 유형을 정의하는것은 바람직하다. 가령 권한(401)에 대한 검증은 컨트롤러, 유효성(404)에 대한 검증은 서비스 처럼 말이다. 객체지향적 관점으로 봤을 때 해당 클래스가 객체로써 올바르게 작동할 수있는가? 를 따져보아 개발자가 직접 선택하면 된다. Question.만약 권한에 대한 검증을 서비스에서 한다면? Answer. 권한에 대한 검증을 서비스에서 진행한다면 해당 서비스를 다른 컨트롤러 또는 서비스에서 이용함에 있어 권한문제를 통과하지 못할 수 있다는 불확실성이 생긴다. 반드시 권한이 있는 유저가 그 서비스 메소드를 호출..