헬린코린이
[Spring Framework] IoC & AOP 본문
Spring Framework
- 자바 플랫폼을 위한 오픈소스 애플리케이션 프레임워크로서 엔터프라이즈급 애플리케이션을 개발하기 위한 모든 기능을 종합적으로 제공하는 경량화된 설루션입니다.
- 엔터프라이즈급 개발이란 뜻대로만 풀이하면 기업을 대상으로 하는 개발이라는 말입니다.
- Spring Framework는 경량 컨테이너로 자바 객체를 담고 직접 관리합니다.
- IoC와 AOP를 지원하는 경량의 프레임워크입니다.
IoC (Inversion of Control) 제어의 역행입니다.
일반적으로 지금까지 프로그램은 모든 작업을 사용자가 제어하는 구조였는데
IOC에서는 이 흐름의 구조를 바꿉니다.
IOC에서의 객체는 자기가 사용할 객체를 선택하거나 생성하지 않습니다.
또한 자신이 어디서 만들어지고 어떻게 사용되는지 또한 모릅니다.
자신의 모든 권한을 다른 대상에 위임함으로써 제어권한을 위임받은 특별한 객체의 의해 결정되고 만들어집니다.
즉, 제어의 흐름을 사용자가 컨트롤하지 않고 위임한 특별한 객체에 모든 것을 맡기는 것입니다.
Spring 프레임워크에서는 "new"가 적을수록 좋은 코드입니다.
그렇다면 new 없이 객체화를 어떻게 하나??
Spring 컨테이너는 객체 생성 및 객체 사용을 관리할 수 있습니다.
소스코드에 new가 없어지면 결합도가 낮아지고 유지보수가 용이해집니다.
POJO들도 객체화해줄 수 있는 것이 Spring 프레임워크!
POJO(Plain Old Java Object)란 말 그대로 평범한 자바 오브젝트입니다.
Spring 컨테이너가 POJO를 객체화하는 순서로는
1) 설정정보를 필요로 하고
2) xxx.xml이 로딩되고
3) 설정파일에 등록해 둔 요청이 수행된다면,
4) 설정해 두었던 대로 객체화를 진행하고
5) 해당 객체의 메서드도 호출합니다.
AOP (Aspect Oriented Programming) 관점지향 프로그래밍입니다.
대부분 소프트웨어 개발 프로세스에서 사용하는 방법은 OOP(Object Oriented Programming)입니다.
OOP는 객체지향 원칙에 따라 관심사가 같은 데이터를 한 곳에 모아 분리하고 낮은 결합도를 갖게 하여 독립적이고
유연한 모듈로 캡슐화를 하는 것을 일컫습니다. 하지만 이러한 과정 중 중복된 코드들이 많아지고 가독성, 확장석,
유지보수성을 떨어 뜨립니다. 이러한 문제를 보완하기 위해 나온 것이 AOP입니다.
무분별하게 중복되는 코드를 한 곳에 모아 중복되는 코드를 제거할 수 있어지고 공통기능을 한 곳에 보관함으로써
공통 기능 하나의 수정으로 모든 핵심기능들의 공통기능을 수정할 수 있어 효율적인 유지보수가 가능하며 재활용성이
극대화됩니다.