Spring에서 Service 인터페이스와 DAO 인터페이스를 만드는 이유.

Structure of Knowledge·2021년 1월 20일
1

Spring MVC Exercise in BIT

목록 보기
11/19
post-thumbnail

  MVC 패턴의 웹개발에서 Model 부분은 Service와 DAO 로 나눠서 코딩한다.
 Spring에서 이 부분을 코딩할 때, 이전과는 다르게 Service와 DAO의 인터페이스를 만들고, 인터페이스를 구현하는 클래스를 만든다. 이유는 무엇일까?
(오개념이라면 수정하겠음)

ex)

  1. DAO 단계의 구현객체의 메소드 안의 로직(업무로직)이 바뀌어도, DAO 인터페이스는 그대로이다.

  2. Service 단계, Service의 구현객체는 DAO 인터페이스 타입으로 선언하고, 이 때, Spring에서는 자동으로 객체를 생성하여 선언한 변수에 주입시킨다.

  3. Service 구현객체에서 DAO 인터페이스의 메소드를 호출할 때, 구현객체에서 오버라이딩된 로직을 이용하게 된다.

  4. 이는 DAO 구현객체에서 업무로직이 아무리 바뀐다고 할 지라도, 다음단계인 Service에서는 전혀 로직을 수정할 필요가 없다는 것을 의미한다.

  5. DAO와 Service 부분이 완전히 분리되고, 분업을 가능하게 해준다.  마찬가지로, Controller와 Service도 완전히 분리되어있다.

  위의 오른쪽 그림이 바로, Spring이 자동으로 객체를 생성하여 선언된 변수에 주입하는 부분이다. 이것이 바로 DI(의존성 주입)의 개념이고 이를 가능하게 해준 Spring의 기법이 IoC(제어의 역전)이다.

 결론: Spring에서는 IoC로 DI를 만들고, DI때문에 인터페이스를 구현하면 DAO, Service, Controller 를 완전히 분리시킬 수 있다.

cf) IoC 하는 방법(?)
변수 위에
@Autowired
@Resource
@Inject
@Setter(롬복 라이브러리)

클래스 위에
@AllArgsConstructor

profile
객체와 제어, 비전공자 개발자 되기

1개의 댓글

comment-user-thumbnail
2021년 1월 21일

매우 잘했어요 짝짝짝

답글 달기