AOP (Aspect Oriented Programming : 관점 지향 프로그래밍)
📌개념
어플리케이션의 기능중에서 핵심기능(로그인,회원가입,계좌이체 등) 과 부가기능(보안,트랜잭션,로깅처리,예외처리 등) 을 분리해서 개발하고자 하는 개발 방법론.
핵심기능에서 부가기능이 필요하면 주입받아서 사용한다.
📌기술
AspectJ 이름의 AOP 원천 기술이 존재 (1995년)
Spring에서 AspectJ원천 기술 스킬에서 일부분의 스킬을 채택하고 Spring AOP라고 부름.
외부 라이브러리가 필요하다.
외부 라이브러리
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.9.4</version> </dependency>
용어
📌 주입시점 (Join Point)
login 메서드 호출시 ★★★
⇒ 부가기능이 핵심기능에 주입되는 시점은 핵심기능의 메서드를 호출할 때 이다.
(원천 기술인 AspectJ는 메서드 호출 및 다양한 상황에서도 주입받을 수 있다.)
📌 어떤 메서드 호출시 주입? 표현식 (Pointcut)
login 메서드가 호출될 때 주입하도록
login 메서드가 선택될 수 있게 표현식을 사용해서 알려준다.
@Pointcut ("execution(" * login(..)") ")
https://docs.spring.io/spring-framework/docs/5.2.25.RELEASE/spring-framework-reference/core.html#aop-pointcuts-examples
교안 p.70
📌 타겟(target)
핵심기능 빈 (부가기능이 주입되는 대상)
📌 aspect
부가기능이 구현된 빈
@Aspect 어노테이션 지정한다.
⇒ 활성화 위해서 <aop:aspectj-autoproxy /> 지정한다.
📌 위빙(weaving)
주입(조인)을 의미한다.
메서드 호출(jointPoint) 시 위빙됨.
📌 부가기능의 실행시점 (advice)
- 핵심기능의 메서드호출 전 (before advice) @Before
- 핵심기능의 메서드호출 후 (after advice) @After
- 핵심기능의 메서드 정상처리시 (afterReturning advice) @AfterReturning
- 핵심기능의 메서드 예외발생시 (afterThrowing advice) @AfterThrowing
- 핵심기능의 메서드호출전, 호출후, 정상처리, 예외발생시 모두 포함한 경우 (around advice) @Around
'Framework > SPRING FRAMEWORK' 카테고리의 다른 글
AOP_부가기능의 실행시점(advice) - @After (0) | 2023.08.31 |
---|---|
AOP_부가기능의 실행시점(advice) - @Before (0) | 2023.08.31 |
SpEL - Collection Projection (열 선택) (0) | 2023.08.30 |
SpEL - Collection selection (행 선택) (0) | 2023.08.30 |
SpEL - 리소스 번들 (0) | 2023.08.30 |