728x90
반응형

AOP(Aspect Oriented Programming: 관점지향 프로그래밍)

 스프링에서 여러 개의 클래스들이 각각의 고유한 관심사에만 집중하도록 공통으로 쓰이는 로그관련모듈, 트랜잭션관련모듈, jdbc connection 관련 모듈등을 모두 다른 각각의 클래스에서 객체 생성하게 하지 말고, 스프링에서 객체 생성하고 관리하는 것입니다.


위 사진은 왼쪽의 각각의 서비스들에 로깅, 보안, 트랜잭션 기능은 강사, 학생, 컨텐츠 서비스 각 서비스의 일차적인 관심사는 아님 그러나 로깅, 보안, 트랜잭션 모듈들은 왼쪽 각 서비스들의 모듈을 참조하고 있습니다.

 

-로깅 : 프로그램 개발이나 운영 시 발생하는 문제점을 추적하거나 운영 상태를 모니터링하기 위한 텍스트, Log4j2 : 로그를 전담하는 프레임 워크(공통적인 작업을 자동화하고, 개발자로 하여금 빨리 애플리케이션을 개발하도록 하기 위한 노력의 산물)

-보안 :

-트랜잭션 : DB JAVA언어가 데이터를 주고 받는 과정에 원자성(All or Nothing)을 부여하는 수단


AOP를 이용함으로써 공통 모듈들을 관리하였습니다. 시스템의 전반적인 관심사(로깅, 보안, 트랜잭션 등)를 갖는 모듈들이 그들이 영향을 끼치는 다른 컴포넌트들(학생, 강의, 컨텐츠 서비스)을 모두 덮어버리고 각각의 서비스들은 그들의 고유 기능에 집중할 수 있게 됩니다.

 


 

AOP의 주요 개념 (핵심 기능 바라보며 공통 기능이 철저하게 분리, 개발자가 상황에 따라 핵심기능에 공통 기능을 추가할 수 있습니다.)

1) 관점(Aspect)

-구현하고자 하는 횡단 관심사의 기능을 의미, 한 개 이상의 포인트 컷과 어드바이스의 조합으로 이루어집니다.

-공통기능(로깅, 보안 ,트랜잭션) ex) 물을 트는 행위

2) 조인포인트(Join point)

-관점(Aspect)를 삽입하여 어드바이스가 적용될 수 있는 위치를 말합니다.

-핵심 기능 하나하나 ex) 밥을 짓는 행위

3) 어드바이스(Advice)

  -관점(Aspect)의 구현체로 조인 포인트에 삽입되어 동작하는 코드

-Aspect의 기능 자체

 

4) 포인트 컷(Point Cut)

 어드바이스를 적용할 조인 포인트를 선별하는 과정이나 그 기능을 정의한 모듈을 의미, 패턴 매칭을 이용하여 어떤 조인 포인트를 사용할 것인지 결정한다.

5) 타켓(Target)

 어드바이스를 받을 대상, 즉 객체를 의미, 비즈니스 로직을 수행하는 클래스일 수도 있지만, 프록시 객체가 될 수도 있습니다.

6) 위빙(Weaving) : advice point cut에 입히는 행동


출처 : http://bobr2.tistory.com/entry/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%A3%BC%EC%9A%94-%EA%B0%9C%EB%85%90-%EC%9A%A9%EC%96%B43-AOPAspectoriented-programming

728x90
반응형

+ Recent posts