위로
아래
AOP
AOP(Aspect Oriented Programming)
- 관점 지향 프로그래밍
- 주기능과 보조기능을 분리한 후, 선택적으로 적용해서 사용한다.
- 전체 코드에 흩어져 있는 보조 긴으을 하나의 장소에 모아서 관리할 숭 ㅣㅆ따.
- 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점을 나누어서 보고, 각각의 관점을 기준으로 모듈화하는 것
- 흩어진 관심사를 관점별로 모듈화하고 핵심적인 비즈니스 로직에서 분리해 재사용하는 취지
- 흩어진 관심사 (Crosscutting Concerns) : 소스 코드 상에서 다른 부분에 계속 반복해서 쓰이는 코드들
- 스프링에서는 @Aspect 어노테이션을 붙여서 해당 클래스가 Aspect를 나타내는 클래스라는 것을 명시한다.
횡단 관심사 -> 보조기능.
종단 관심사 -> 주기능.
AOP 주요 개념
- Aspect : 구현하고자 하는 보조 기능 (흩어진 관심사를 모듈화한 것)
- Advice : 실질적으로 어떤 일을 해야할 지에 대한 것. Aspect를 구현한 클래스. 실질적인 보조기능을 담은 구현체.
- Target : Aspect가 적용될 위치 (클래스, 메소드 등)
- JointPoint : Advice가 적용될 시점. 메소드 진입 지점, 생성자 호출 시점 등에 적용 가능.
- PointCut : Advice가 적용되는 대상을 지정. JointPoint의 상세한 스펙을 정의한 것. 구체적으로 패키지이름/클래스이름/메소드이름으로 지정한다.
- Weaving : advice를 주기능에 적용하는 것.
AOP 구현 방법
- 스프링 프레임워크 제공 API 사용
- @Aspect 애너테이션 이용
API 사용
- 타깃(Target) 클래스 지정
- 어드바이스(Advice) 클래스 지정
- 설정 파일에서 포인트컷(PointCut) 설정
- 설정 파일에서 어드바이스와 포인트컷을 결합하는 어드바이저 설정
- 설정 파일에서 스프링의 proxyFactoryBean 클래스를 이용해 타깃에 어드바이스 설정
- getBean() 메소드로 빈 객체에 접근해 사용