[SPRING BOOT] 2. 서비스 구성에 관한 이야기

구성 요소

일단 스프링의 서비스를 구성하기 위해 대충 알아두어야 할것은 다음과 같다
Domain, Persistence, Service, Controller
그 밖에도 Configuration이라던지 하는 것들이 있다. 이와 같은 것들을 Component라고 부르며, 각각은 대충 다음과 같이 이해하면 된다.

Domain

어떤 데이터를 구성하기 위한 class. 어떤 DB의 값을 Object로 mapping하기 위한 class로 사용 된다.

Persistence

DB에 access하기 위한 부분. Db에 접근하여 data를 domain으로 가져오던가, domain을 DB에 저장 하기 위해 사용된다. Jdbc에서는 Mapper, jpa에서는 Repository라고 많이 지칭된다. class에 @Repository annotaion을 붙이곤 한다.

Service

Persistence와 Domain을 사용하여 business logic을 작성 하여 service를 제공한다. class에 @Service annotaion을 붙이곤 한다.

Controller

실제로 client와 연동하는 interface를 담당한다. 대표적으로 web service의 RestContoller가 있다. class에 @Controller annotaion을 붙이곤 한다.

Configuration

기타 서비스 구동에 필요한 configuration들을 구현 한다.

구성 방법

Spring framework하면 많이 회자 되는 말이 DI(Dependency Injection)과 AOP(Aspect Oriented Programming)이다. Component들은 Spring에서 wiring이라는 방법으로 필요한 부분에 연결되여 객체가 주입된다. 원래는 @Bean으로 표시해주고 가져다 사용 하는 방법인 것 같은데,(실제로 @Bean은 xml에 설정 해두고 사용 하기도 하는데, 아직은 영 너무 복잡하다) 아직은 필요를 못 느끼므로 필요한 상황이 오면 다시 얘기 하도록 하겠다.

기본적으로는 @Component나 이에 상응하는 표시를 하고(차후에 다시 얘기) @ComponentScan으로 DI container에 등록한 후 @Autowired를 사용하여 객체를 주입 한 후 사용을 한다.

보통은,
  1. Domain으로 DB의 스키마를 정의하고,
  2. Persistence에서 Domain에 해당하는 객체를 DB에 쓰거나 읽고,
  3. Service에 Persistence를 주입하여 DB를 사용하는 service를 구현하고,
  4. Controller에 Service를 주입하여(가끔은 Persistence도 주입함. 딱히 business logic이 필요 없는 경우?) 외부와 interfacing 하는 adapter로 사용이 되는 구조이다.


실제 구현 하는 방법이나 자세한 얘기는 차후에 하도록 하겠다.

바로가기

목차 : 0. 목차
이전 : 1. 시작하기
다음 : 3. Application 파일(시작 파일) 작성[작성중]

댓글