Spring Framework에서 핵심은 의존 관계 주입 컨테이너이다. 그렇다면 의존성이란 무엇일까?
프로그래밍에서 의존성(Dependency)이란 어떤 class가 자신의 역할을 하기 위해 필요한 Field값이나 사용할 다른 Class와의 관계를 뜻한다.
Dependency는 프로그래밍을 진행할때 위험할 수 있는데, 예를 들어 의존관계인 두 class A, B가 있고 A class가 B class의 method를 이용한다고 해보자. 만약 B class가 사라지면 A class는 complile 되지도 못하고 프로그램이 아예 죽어버리게 된다. 만약 B class가 수정된 경우엔 A class 또한 수정이 필요할 수 있기 때문에 유지보수를 하는 상황에서 더 많은 시간과 노력이 필요해질수 있다는 단점이 있다.
Unit Test를 할 때도 문제가 될 수 있는데 독립적으로 테스트가 필요하지만 독립되지 못하기 때문에 어려움이 있을 수 있다.
위와 같은 문제점을 해결하기 위해 Dependency Injection이라는 개념이 필요하다.
Dependency Injection 이란 객체자체가 아닌 Framework에 의해 프로그램의 흐름과 객체의 의존성이 주입되는 방식이다. 객체의 생성을 container에서 일괄적으로 진행하고 life-cycle의 관리 또한 container에 맡기고 필요할 때만 객체를 주입받아서 사용하기 때문에 객체의 생성 및 관리의 주체가 개발자가 아니라 container가 되므로 Inversion of control(제어의 역전)이 되는 것이다.
'SPRING' 카테고리의 다른 글
IOC(Inversion of Control) (0) | 2019.06.11 |
---|---|
Container의 개념과 WAS (0) | 2019.06.11 |
2) PetClinic 예제를 통한 Spring (0) | 2019.06.11 |
1) PetClinic 예제를 통한 Spring (0) | 2019.06.11 |