위로 아래

AOP

AOP(Aspect Oriented Programming)

 

 

  1. 관점 지향 프로그래밍
  2. 주기능과 보조기능을 분리한 후, 선택적으로 적용해서 사용한다.
  3. 전체 코드에 흩어져 있는 보조 긴으을 하나의 장소에 모아서 관리할 숭 ㅣㅆ따.
  4. 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점을 나누어서 보고, 각각의 관점을 기준으로 모듈화하는 것
  5. 흩어진 관심사를 관점별로 모듈화하고 핵심적인 비즈니스 로직에서 분리해 재사용하는 취지
  6. 흩어진 관심사 (Crosscutting Concerns) : 소스 코드 상에서 다른 부분에 계속 반복해서 쓰이는 코드들
  7. 스프링에서는 @Aspect 어노테이션을 붙여서 해당 클래스가 Aspect를 나타내는 클래스라는 것을 명시한다.

 

횡단 관심사 -> 보조기능. 

종단 관심사 -> 주기능.

 

 

 

 


AOP 주요 개념

  1. Aspect : 구현하고자 하는 보조 기능 (흩어진 관심사를 모듈화한 것) 
  2. Advice : 실질적으로 어떤 일을 해야할 지에 대한 것. Aspect를 구현한 클래스. 실질적인 보조기능을 담은 구현체. 
  3. Target : Aspect가 적용될 위치 (클래스, 메소드 등)
  4. JointPoint : Advice가 적용될 시점. 메소드 진입 지점, 생성자 호출 시점 등에 적용 가능.
  5. PointCut : Advice가 적용되는 대상을 지정. JointPoint의 상세한 스펙을 정의한 것. 구체적으로 패키지이름/클래스이름/메소드이름으로 지정한다. 
  6. Weaving : advice를 주기능에 적용하는 것.

 

 

 


AOP 구현 방법

  1. 스프링 프레임워크 제공 API 사용
  2. @Aspect 애너테이션 이용

 

API 사용

  1. 타깃(Target) 클래스 지정
  2. 어드바이스(Advice) 클래스 지정
  3. 설정 파일에서 포인트컷(PointCut) 설정
  4. 설정 파일에서 어드바이스와 포인트컷을 결합하는 어드바이저 설정
  5. 설정 파일에서 스프링의 proxyFactoryBean 클래스를 이용해 타깃에 어드바이스 설정
  6. getBean() 메소드로 빈 객체에 접근해 사용