코드 그라데이션

어노테이션과 AOP 본문

Spring/핵심 가이드

어노테이션과 AOP

완벽한 장면 2023. 1. 14. 21:41

어노테이션의 의미

1) 주석을 의미하는 영어 포현

2) @oooooo 형태로 작성

3) 외부 소프트웨어에 필요한 처리 내용을 전달한다.

 

인스턴스 생성 어노테이션

- 애플리케이션 만들 때 레이어로 만드는 것이 좋다. 즉 계층화를 하라는 의미이다.

 

도메인 주도 설계

레이어 개요
애플리케이션 레이어
(Application Layer)
클라이언트와의 데이터 입출력을 제어하는 레이어
도메인 레이어
(Domain Layer)
애플리케이션의 중심이 되는 레이어로서 업무 처리를 수행하는 레이어
인프라스트럭처 레이어
(Infrastructure Layer)
데이터베이스에 대한 데이터 영속성(Persistence Context) 등을 담당하는 레이어 

 

인스턴스 생성 어노테이션(주요)

어노테이션 개요
@Controller 애플리케이션 레이어의 컨트롤러에 부여
@Service 도메인 레이어의 업무 처리에 부여
@Repository 인프라 레이어의 데이터베이스 액세스 처리에 부여

인스턴스 생성 어노테이션(보조)

어노테이션 개요
@Component @Controller, @Service, @Repository 용도 이외의 인스턴스 생성 대상 클래스에 부여

커스텀 이노테이션

: 직접 만드는 것. java.lang.Anotation이라는 인터페이스를 상속하고 만든다.

 

AOP(관점 지향 프로그래밍)

: 스프링 프레임워크에서 제공하는 AOP 기능을 활용하여 '중심적 관심사'와 '횡단적 관심사'를 분리하여 프로그램을 쉽게 만들 수 있다.

 

[AOP의 고유 용어]

용어 내용
어드바이스(Advice) 횡단적 관심사의 구현(메서드).  로그 출력 및 트랜젝션 제어 등.
에스팩트(Aspect) 어드바이스를 정리한 것(클래스)
조인포인트(JoinPoint) 어드바이스를 중심적인 관심사에 적용하는 타이밍.
메서드(생성자) 실행 전. 메서드(생성자) 실행 후 등 실행되는 타이밍 
포인트컷(PointCut) 어드바이스를 삽입할 수 있는 위치
ex) 메서드 이름이 get으로 시작할 때만 처리하는 조건을 정의할 수 있다.
인터셉터(Intercepter) 처리의 제어를 인터셉트하기 위한 구조 또는 프로그램.
스프링 프레임워크에서는 인터셉트라는 메커니즘으로 
어드바이스를 중심 관심사에 추가한 것처럼 보이게 한다.
타깃(Target) 어드바이스가 도입되는 대상

 

[어드바이스의 다섯 가지 종류]

어드바이스 내용 어노테이션
Before Advice 중심적 관심사가 실행되기 이전에 횡단적 관심사를 실행 @Before
After Returning Advice 중심적 관심사가 정상적으로 종료된 후에 횡단적 관심사를 실행 @AfterReturning
After Throwing Adivice 중심적 관심사로부터 예외가 던져진 후로 횡단적 관심사를 실행 @AfterThrowing
After Advice 중심적 관심사의 실행 후에 횡단적 관심사를 실행
(정상 종료나 예외 종료 등의 결과와 상관없이 실행)
@After
Around Advice 중앙적 관심사 호출 전후에 횡단적 관심사를 실행 @Around

참고 : 포인트컷 방식

 

AOP 요약

* AOP에서는 프로그램을 2개의 요소인 중심적 관심사와 횡단적 관심사로 구성되어 있다고 생각한다.

* 중심적 관심사란 구현해야 할 기능을 나타내는 비즈니스 로직을 의미

* 횡단적 관심사란 본질적인 기능은 아니지만, 품질이나 유지보수 등의 관점에서 꼭 필요한 기능을 나타내는 프로그램.

* AOP에서는 횡단적 관심사를 분리함으로써 기존 코드를 수정하지 않아도 프로그램 중에 특정 기능(공동 처리)을 추가할 수 있다.

* 스프링 프레임워크는 다양한 공통 기능을 AOP에서 제공한다.

 

728x90
Comments