스프링에서 일반적인 Java 객체를 new로 생성하여 개발자가 관리 하는 것이 아닌 Spring Container에 모두 맡긴다.
즉, 개발자에서 -> 프레임워크로 제어의 객체 관리의 권한이 넘어 갔음으로 “제어의 역전” 이라고 한다.
DI
의 장점
1. 의존성으로 부터 격리시켜 코드 테스트에 용이하다.
2. DI르 통하여, 불가능한 상황을 Mock와 같은 기술을 통하여, 안정적으로 테스트 가능하다.
3. 코드를 확장하거나 변경 할 때 영향을 최소화 한다. (추상화)
4. 순환참조를 막을 수 있다.
스프링 어플리케이션은 대부분 특별한 경우를 제외하고 MVC 웹 어플리케이션에서는 Wec Layer
, Business Layer
, Data Layer
으로 정의
AOP는 관심사가 동일한 기능들을 분리하자 라는 목표를 가지고 있다.