: Spirng Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리
IOC 는 Inversion Of Control 인데 이를 번역하면 제어의 역전이라는 뜻이다.
일반적인 자바 프로그램은 객체 결정 및 생성 -> 의존성 객체 생성 -> 객체 내의 메소드 호출 하는 작업을 반복했다.
이는 각 객체들이 프로그램의 흐름을 결정하고 각 객체의 구성하는 작업에 직접적으로 참여한 것이다.
즉 모든 작업을 사용자가 제어하는 구조이다.
하지만 IOC에서는 자기가 사용할 객체를 생성하지 않는다.
자신의 모든 권한을 다른 대상에 위임함으로 써 제어권한을 위임받은 특별한 객체에 의해 결정되고 만들어진다.
즉 재어의 흐름을 사용자가 컨트롤 하지 않고 위임한 객체에 모든 것을 맡긴다.
의존성 주입이란 객체가 서로 의존하는 관계가 되게 의존성을 주입하는 것이다.
객체지향 프로그램에서 의존성 이란 하나의 객체가 어떠한 다른 객체를 사용하고 있음을 의미한다.
IoC에서 DI는 각 클래스 사이에 필요로 하는 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해 주는 것입니다.
대부분의 소프트웨어 개발 프로세스는 OOP(Object Oriented Programming)이다.
OOP 는 같은 데이터를 한곳에 모아 분리하고 낮은 결합도를 갖게 하여 독립적이고 유연한 모듈로 캡슐화를 하는 것을 일컷는다. 하지만 이러한 과정 중 중복된 코드들이 많아지고 가독성, 확장성, 유지보수성을 떨어뜨린다. 이를 보완하기 위해 AOP 가 탄생했다.
AOP 는 핵심기능과 공통기능을 분리시켰다.
핵심 로직에 영향을 끼치지 않게 공통기능을 끼워 넣는 개발 형태이며 이렇게 개발함에 따라 무분별하게 중복되는 코드를 한 곳에 모아 중복되는 코드를 제거 할 수 있어지고 공통기능을 한 곳에 보관해서 공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정 할 수 있어 효율적인 유지보수가 가능하며 재활용성이 극대화된다.
Model : 데이터처리를 담당하는 부분
View : 사용자 Interface를 담당하며 사용자에게 보여지는 부분
Controller : View에서 받은 요청을 가공하여 Model에 이를 전달한다. 또한 Model 로부터 받은 결과를 View로 넘겨주는 역할을 한다.
Controller에서는 모든 요청 에러와 모델 에러를 처리하며 View와 Controller에 정보를 알고 있어야한다.