Spring

@Service

yong_ღ'ᴗ'ღ 2022. 11. 17. 03:46

Controller: client의 요청과 응답을 처리한다. 실제 처리는 Service에게 위임한다.

     - client의 요청을 받고, 그 요청에 대한 처리를 Service에게 위임한다.

       그 후, 처리된 결과를 받아서 client에게 응답한다.

 

Repository, Mapper: DB Access를 처리한다. (Data Access Layer)

 

Service: Controller와 Repository 중간에 위치하여, 핵심 비즈니스 로직을 구현 및 처리한다.

     - DB Access가 필요한 부분은 Repository에게 위임한다.

 

    🔸 Service는 독립적인 계층으로 View와 DB 종류에 영향을 받지 않도록 설계해야 한다. 

        - View의 종류가 바뀌면 Controller는 영향을 받을 수 있다.

        - DB의 종류가 바뀌면 Repository는 영향을 받을 수 있다.

        - 하지만, 그 중간에 위치하고 있는 Service 계층은 다른 외부 기술에 영향을 받지 않도록 설계해야 한다.

          그렇게 함으로써 재사용 가능하게 만들어야 한다.

 

    🔸 Service 계층의 메서드가 데이터 트랜잭션에서 하나의 단위가 된다.

 

    🔸 Service 클래스 만들 때에는 애플리케이션의 세부 영역 별로 생성하여 구현한다.

         - 하나의 클래스에 모든 로직들을 집어넣지 않는다!

           ex) 사용자에 관련된 서비스 클래스, 게시물 관련 서비스 클래스 등등,,

 

    🔸 @Controller, @Service, @Repository 모두 세부 영역 별로 만든다.