티스토리 뷰
1. AOP란 ?
Aspect Oriented Programming의 줄임말로, 관점지향 프로그램 이라고 한다.
스프링 어플리케이션은 특별한 경우를 제외하고 MVC 웹 어플리케이션에서 Web Layer, Business Layer, Data Layer 로 정의한다.
스프링 DI가 의존성에 대한 주입이라면, AOP는 로직에 대한 주입이라 볼 수 있다.
1-1. Web Layer
REST API를 제공하고 Client 중심의 로직을 적용.
보통 요청에 대한 응답을 해주거나 HTTP 상태를 변경한다. Controller라고 생각하면 될 것 같다.
1-2. Business Layer
내부 정책에 따른 logic을 개발.
서비스 로직을 짜는 것이 Business Layer라고 볼 수 있다. Service라고 생각하면 될 것 같다.
1-3. Data Layer
데이터베이스 및 외부와의 연동을 처리
application.yml을 생각하면 될 것 같다.
2. 횡단 관심사
프로그램을 작성하다보면 다수의 모듈에서 공통적으로 나타나는 부분이 존재하는데, 이것을 횡단 관심사 라고 한다.
위 사진은 대표적인 횡단 관심을 나타낸다.
로깅, 보안, 트랜잭션에서 반복적으로 나타나는 부분이 있다. 코드적으로 이해가 안 될 수 있다.
그럼 현실상황에서 예시를 들어보자. 한 남자와 여자가 있고, 두 사람이 집에 들어가는 일을 간략한 의사코드로 나타내보자.
남자 의사코드
열쇠로 문을 열고 집에 들어간다.
컴퓨터로 게임을 한다.
씻고 잔다.
자물쇠를 잠그고 집을 나선다.
...
-----------------------
예외사항 : 집에 불남 - 119에 신고한다.
여자 의사코드
열쇠로 문을 열고 집에 들어간다.
요리를 한다.
씻고 잔다.
자물쇠를 잠그고 집을 나선다.
...
-----------------------
예외사항 : 집에 불남 - 119에 신고한다.
반복적으로 나타나는 부분을 체크해보자.
열쇠로 문을 열고 집에 들어간다.
씻고 잔다.
자물쇠를 잠그고 집을 나선다.
...
-----------------------
예외사항 : 집에 불남 - 119에 신고한다.
이것을 횡단 관심사라 한다.
3. 주요 Annotation
annotation | 의미 |
@Aspect | AOP를 정의하는 클래스에 할당 |
@Pointcut | 기능을 어디에 적용시킬지 지점을 설정 |
@Before | 메소드 실행하기 이전 |
@After | 메소드가 성공적으로 실행 후 예외가 발생되더라도 실행 (finally와 비슷하다고 보면 될 것 같다) |
@AfterReturing | 메소드를 호출하면 메소드가 정상적으로 실행하고 리턴까지 완료했을 때 |
@AfterThrowing | 메서드를 호출했는데 예외가 발생했을 때 |
@Around | Before / After 모두 제어 |
이 Annotation들은 다음포스팅인 실무 사례 알아보기에서 자세하게 나온다.
'SpringBoot' 카테고리의 다른 글
Spring Security 동작 원리 (4) | 2022.07.17 |
---|---|
AOP 실무 사례 알아보기 (0) | 2022.07.09 |
자주 사용하는 Thymeleaf 문법 (0) | 2022.07.08 |
게시판 화면을 위한 Thymeleaf 적용과 데이터 출력하기 (0) | 2022.07.08 |
setter를 지양하고 Builder 패턴을 사용하자 (0) | 2022.05.05 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday