AOP
Aspect Oriented Programming의 약자로, 관점(관심,기능) 지향 프로그램이란 뜻입니다. 공통 기능과 핵심 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법입니다.
AOP의 기본 개념은 핵심 기능에 공통 기능을 삽입하는 것입니다. 즉, 핵심 기능의 코드를 수정하지 않으면서 공통 기능의 구현을 추가하는 것이 AOP라고 할 수 있습니다.
핵심 기능에 공통 기능을 삽입하기 위한 방법으로는 크게 세 가지가 있습니다.
- 컴파일 시점에 코드에 공통 기능 추가
- 클래스 로딩 시점의 바이트 코드에 공통 기능 추가
- 런타임에 프록시 객체를 생성해서 공통 기능 추가
스프링이 제공하는 AOP방식은 프록시를 이용하는 세 번째 방식입니다.(두 번째 방식을 일부 지원하지만 주로 사용되지는 않습니다.)
스프링 AOP는 프록시 객체를 자동으로 만들어줍니다. 따라서 프록시 클래스를 직접 구현할 필요는 없고 단지 공통기능을 구현한 클래스만 구현하면 됩니다.
AOP의 주요 용어
용어 | 의미 |
---|---|
Aspect | 공통 기능(트랜잭션, 보안, 로깅 등) |
Target | Aspect를 적용하는 곳 |
Advice | 언제 공통 기능을 핵심 로직에 적용할 지 |
Weaving | Advice를 핵심 로직에 적용하는 것 |
JoinPoint | Advice의 적용 가능 한 지점(메서드 호출, 필드 값 변경 등), 스프링은 프록시를 이용한 AOP를 구현하기 때문에 메서드 호출에 대한 JoinPoint만 지원 |
PointCut | 실제 Advice가 적용되는 JoinPoint, 스프링에서는 정규 표현식이나 AspectJ문법을 이용하여 PointCut을 정의할 수 있음 |
Advice의 종류
종류 | 설명 |
---|---|
Before Advice | 대상 객체의 메서드 호출 전에 공통 기능 실행 |
After Returning Advice | 대상 객체의 메서드가 익셉션 없이 실행된 이후 공통 기능 실행(try-catch-finally의 try) |
After Throwing Advice | 대상 객체의 메서드 실행 도중 예외가 발생한 경우에 공통 기능 실행(try-catch-finally의 catch) |
After Advice | 대상 객체의 메서드 실행 후 공통기능 실행(try-catch-finally의 finally) |
Around Advice | 대상 객체의 메서드 실행 전, 후 또는 익셉션 발생 시점에 공통 기능 실행 |
Spring AOP의 과정
다음에는 AOP를 구현하는 방법에 대해 알아보겠습니다.
반응형
'Spring' 카테고리의 다른 글
[Spring] ORM, JPA, Hibernate, Spring Data JPA의 개념 (0) | 2020.07.08 |
---|---|
[Spring] AOP 구현 (XML) (0) | 2020.07.06 |
[Spring] @Autowired @Resource @Inject @Qualifier (0) | 2020.07.05 |
[IntelliJ] release version 5 not supported 오류 (0) | 2020.06.27 |
[Tomcat] 톰캣 로그 한글에서 영어로 바꾸는 방법 (0) | 2020.06.26 |