이제부터 Spring의 중요한 개념 부분을 공부해보도록 하겠습니다! 아래 그림은 Spring Framework의 구조입니다.
1. IOC_Inversion of Control / 제어의 역행
- Application의 life-cycle 을 Application Container가 담당함
- 쉽게 얘기하면, Application의 주도권이 사용자에게 있는 게 아니라 Spring Framework에게 있다!
- 공식화된 설계 패턴을 Application 통합할 수 있는 first-class 개체로 코드화
2. DI_Dependency Injection / 의존성 주입
- high level module은 low level module에게 의존하면 안되고 interface에 의존해야됨
- 추상화는 세부 사항에 의존하면 안됨, 따라서 세부 사항이 추상화에 의존해야함
- interface를 활용해 결합도를 낮춰야 함
@Annotation
으로 객체 간의 의존관계를 설정 할 수 있음
3. AOP_Aspect Oriented Programming
- OOP에서 모듈화의 핵심 단위는 클래스인 반면, AOP에서 모듈화의 단위는 aspect
- Aspect를 사용하면 여러 유형과 개체를 가로지르는 트랜잭션 관리와 같은 관심사를 모듈화
- 자바로 구현되어 특별한 컴파일 과정이 필요하지 않음
- Spring IoC 컨테이너는 AOP에 의존하지 않으므로 AOP를 사용하지 않아도 됨