|
❖ DI (Dependency Injection) - IoC 개념을 통해서 객체 간의 Wiring 문제를 해결 - Assembler라는 결합자를 통해서 객체 간의 의존성을 관리 - 객체의 생성 및 관리를 Assembler에서 하며, 생성된 객체를 사용자에게 Injection함. - 기존 사용자가 객체를 생성하는 주체가 되던 것을, Assembler에 의해서 Injection 받게 됨
|
❖ AOP 시작에 앞서.. - 소프트웨어 엔지니어링의 원칙 구현. Separation of Concerns : Problem Domain(문제 영역)을 독립적인 Module로 분해하여 생각 - Core Concerns : 시스템의 핵심 가치와 목적이 그대로 드러나 영역. (비즈니스 기능) 특정 기능에 따라서 모듈화/추상화가 쉽게 가능한 부분. - Cross-Cutting Concerns : 시스템 전반에 산재된 기능. Core Concerns과의 전체적으로 연관 Logging, Security/Authentication, Transaction 등 - Cross-Cutting Concerns에 대한 모듈화를 어떻게 할 것인가? : 기존의 OOP에서 Cross-Cutting Concerns 코드를 비즈니스 로직에 직접 삽입하여 전체에 산재함. 따라서 생산성/품질이 떨어지며, 유지보수가 어려워짐.
❖ AOP (Aspect Oriented Programming) 용어 - Aspect : Cross-Cutting Concerns에 대한 기능 - Advice : Aspect를 구현한 것. - Jointpoint : Advice를 적용하는 지점. - Point-cut : Advice가 어떤 Jointpoint에 적용되어야 하는 정의 - Target : advice를 받는 클래스 - Weaving : Cross-Cutting Concerns을 Core Concerns에 삽입하는 것. Complie, Class Loading, Runtime 시점의 방식으로 제공됨.
❖ AOP (Aspect Oriented Programming) - Core Concerns를 구현한 코드와 Advice 코드를 Point-cut 정보를 통해서, Weaving 하는 것. - Cross-cutting Concern을 어떻게 처리할 것인가? 에 대한 새로운 패러다임. - 객체지향개념과 다른 것이 아니라, 발전적인 객체지향 개념이라고 볼 수 있음. - 기존의 깩체지향 개념에서 Cross-cutting Concern 부분을 비즈니스 로직에 포함시켜서 구현함에 따라 Cross-cutting Concern 부분이 산재하여 수정이 힘들고, 생산성 저하, 유지보수 품질이 떨어지게 됨. - 기존의 Cross-cutting Concern을 정적으로 결합한 것에 반해, AOP는 동적으로 결합함.
|
삭제된 댓글 입니다.