MVC 패턴의 웹개발에서 Model 부분은 Service와 DAO 로 나눠서 코딩한다.
Spring에서 이 부분을 코딩할 때, 이전과는 다르게 Service와 DAO의 인터페이스를 만들고, 인터페이스를 구현하는 클래스를 만든다. 이유는 무엇일까?
(오개념이라면 수정하겠음)
ex)
위의 오른쪽 그림이 바로, Spring이 자동으로 객체를 생성하여 선언된 변수에 주입하는 부분이다. 이것이 바로 DI(의존성 주입)의 개념이고 이를 가능하게 해준 Spring의 기법이 IoC(제어의 역전)이다.
결론: Spring에서는 IoC로 DI를 만들고, DI때문에 인터페이스를 구현하면 DAO, Service, Controller 를 완전히 분리시킬 수 있다.
cf) IoC 하는 방법(?)
변수 위에
@Autowired
@Resource
@Inject
@Setter(롬복 라이브러리)
클래스 위에
@AllArgsConstructor
매우 잘했어요 짝짝짝