초기의 프로그래밍 방식은 코드를 쭉 나열해 놓는 코딩 방식인 절차적 프로그래밍이용.
하지만 대부분의 사람들은 한 번에 여러가지 다른 생각을 하는데에 취약하기 때문에 우리가 하나의 사물(객체)에 하나의 의미를 부여하는 것처럼 프로그래밍하게 되었음.
자를 것이 필요 -> 가위 떠올림,
적을 필요가 있을 때 -> 연필 떠올림.
=> 한번에 하나의 역할을 하는 객체를 만들어 프로그래밍.
생각나는대로 적기 => 절차적 프로그래밍,
메모 양이 많아지면 주제별로 정리해둬야 검색이 용이하다 => 객체지향 프로그래밍
객체 지향 프로그래밍은 역할별로 분리 하는 것!
서버에서의 처리 과정을 크게 3개로 분리함
=> Controller, Service, Repository
중복되는 코드가 생기기 때문이다. 비즈니스 로직 코드가 컨트롤러에 구현되어 있는 경우 다른 컨트롤러의 핸들러 메소드에서 똑같은 로직 코드를 구현해야 하므로 중복코드가 발생하고 재사용성이 줄어든다.
결론적으로, controller와 service를 구분하면 확장성과 재사용성이 좋아지고 중복코드를 제거할 수 있다는 장점이 있다.
출처 | 스프링 웹 계층이란?