일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 알고리즘
- JavaScript
- Effective Java 3
- 코딩테스트
- ElasticSearch
- 오블완
- 자바
- 이차전지관련주
- 예제로 배우는 스프링 입문
- 엘라스틱서치
- 클린아키텍처
- Spring
- 스프링 핵심원리
- 스프링부트
- 스프링핵심원리
- 자바스크립트
- java
- 카카오
- 티스토리챌린지
- 이펙티브자바
- 카카오 면접
- 이펙티브 자바
- effectivejava
- 알고리즘정렬
- 김영한
- Effective Java
- kubernetes
- 스프링
- Sort
- k8s
- Today
- Total
Kim-Baek 개발자 이야기
[책] 스프링 철저 입문 - AOP 본문
구현하고자 하는 비즈니스 로직과는 다소 거리가 있으나, 여러 모듈에 걸쳐 공통적이고 반복적으로 필요로 하는 처리 내용을 횡단 관심사라고 부른다,
- 보안
- 로깅
- 트랜잭션 관리
- 모니터링
- 캐시 처리
- 예외 처리
이러한 것들이 예시가 될 수 있다. 횡단 관심사에 해당하는 부분을 한 곳으로 모으는 것을 횡단 관심사의 분리라 하고, 실현하는 방법을 관점 지향 프로그래밍이라 한다.
AOP는 관점 지향 프로그래밍을 의미하는 약자로, 여러 클래스에 흩어져 있는 횡단 관심사를 중심으로 설계와 구현을 하는 프로그래밍 기법이다. 인스턴스들이 필요한 공통적인 기능을 외부에서 집어넣는 것이다.
AOP의 개념
- 애스팩트 : 단위되는 횡단 관심사. 예로 "로그를 출력한다", "트랜잭션을 관리한다"와 같은 관심사가 애스팩트이다.
- 조인 포인트 : 횡단 관심사가 실행될 지점이나 시점을 말한다.
- 어드바이스 : 특정 조인포인트에서 실행되는 코드로 실제로 구현해서 처리하는 부분.
- 포인트컷 : 수많은 조인 포인트 중 실제로 어드바이스를 적용할 곳을 선별하기 위한 표현식
- 위빙 : 애플리케이션 코드의 적절한 시점에 애스팩트를 적용하는 것. 라이브러리에 따라 다르고, 컴파일이나 클래스 로딩 등 다양한 시점이 있다. 스프링은 기본적으로 실행 시점이다.
- 타깃 : AOP 처리에 의해 처리 흐름에 변화가 생긴 객체를 말한다.
스프링에서 지원하는 어드바이스 유형이다. 아래 그림으로 설명이 가능하다.
스프링 AOP
스프링 안에 AOP를 지원하는 모듈로 스프링 AOP가 포함되어 있다. 빈을 타깃으로 어드바이스를 적용하는 기능이 있다. 프락시 객채를 만들어서 대체하는 방법으로 한다. 어드바이스가 적용된 이후, DI 컨테이너에서 빈을 꺼내보면 프락스 형태로 어드바이스 기능이 덧입혀진 빈이 나온다.
AspectJ라는 AOP프레임워크도 포함되어 있다. 어드바이스를 정의하기 위한 애너테이션이나 포인트컷 표헌 언어 등을 제공한다. 다양한 위빙 시점을 제공한다.
스프링 프로젝트에서 활용되는 AOP 기능
- 트랜잭션 관리 : @Transactional 애너테이션을 지정하면 관리가 된다.
- 인가 : 스프링 시큐리티에서 제공하는 인가 기능을 AOP 형태로 적용할 수 있다. @PreAuthorize 애너테이션이다.
- 캐싱 : @Cacheable
- 비동기 처리 : @Async 를 쓰고 CompleableFuture 타입을 반환하게 하면, 별도의 스레드에서 실행
- 재처리
'개발 > Spring' 카테고리의 다른 글
[카카오 면접] Spring Filter, Interceptor, AOP (3) | 2020.09.06 |
---|---|
[카카오 면접] 서블릿 컨테이너, 스프링부트 동작 과정 (0) | 2020.08.31 |
[책] 스프링 철저 입문 - DI (0) | 2020.08.24 |
[카카오 면접] 서블릿, 서블릿 컨테이너, JSP (0) | 2020.08.11 |
[카카오 면접] Spring boot 1.5 vs 2.0 (0) | 2020.08.11 |