본문 바로가기
Framework/Spring

[Spring] 관점지향프로그래밍(AOP)

by 나비와꽃기린 2015. 1. 30.


AOP(Aspect Oriented Programming)


*OOP의 단점

-OOP의 대표적인 상속은 컴파일시에 행동이 결정 되므로 실행시에 특징을 바꿀수 없다.

-그리고 모든 서브클래스에서 동일한 코드 상속을 받게 될 경우 슈퍼클래스의 변경이 이루어 졌을때 일부 서브클래스에서 원치 않는 변경을 받아들여야만 한다.

-상속은 전혀 유현하지 못한다. 


↓   OOP의 한계로 인해 AOP등장!


*AOP 특징

-이를 해결 하기 위해 구성이라는 기법을 사용한다.

-구성은 상속의 모든 단점을 해결해 준다.

-실행중 동적으로 행동을 바꿀 수 있으며 슈퍼클래스가 없으므로 의존도가 제가 된다.

-하지만 이런 구성도 단점이 있다.

-슈퍼클래스의 코드를 재사용 할 수 없고 구성 객체에게 위임 해야하는 번거로움이 있다.

-AOP는 OOP의 강력한 상속과 구성만으로 처치 곤란했던 여러곳에 흩어진 중보코드를 제거 하였다.

-AOP의 기본 개념은 횡단 관심사(CROSS-CUTTING)에 대한 모듈화 이다.

-기능을 핵심 비지니스 로직(핵심 관심사)과 공통 모듈(횡단 관심사)로 구분하고, 핵심 로직에 영향을 미치지 않  고 사이사이에 고옹 모듈을 효과적으로 잘 끼워넣도록 하는 개발 방법이다.

-공통 모듈(보안,로깅..)을 만든 후에 코드 밖에서 이 모듈을 비지니스 로직에 삽입 하는것이 바로 AOP적인 개발이다. 코드 밖에서 설정 된다는것이 핵심이다.




댓글0