AOP
- Aspect Oriented Programming
- 공통 관심 사항(cross-cutting concern)과 핵심 관심 사항(core concern)의 분리
- 공통 관심 사항을 따로 두고 원하는 곳에 마음대로 적용시키는 것
- 예) 메서드 시간 측정을 하고 싶을 때, 메서드에 일일이 시간 측정 코드를 다 작성하는 것이 아닌 따로 하나 만들어 두고 원하는 곳에 적용할 수 있도록 해주는 기술
- @Aspect로 AOP 사용
- @Component로 스프링 컨테이너에 등록
- @Around로 적용시킬 범위를 설정
AOP에 의한 프록시 생성과 의존 관계 변경
기존 의존관계
- 실제 컨트롤러 -> 실제 서비스 -> 실제 리포지토리
AOP로 인해 프록시가 생성되어 변경된 의존관계
- 프록시 컨트롤러 -> 실제 컨트롤러 -> 프록시 서비스 -> 실제 서비스 -> 프록시 리포지토리 -> 실제 리포지토리
스프링에서 AOP 적용 -> 스프링 컨테이너에서 조작된 가짜 프록시를 생성 -> 컨트롤러가 가짜 프록시를 실행(이때 AOP가 다 실행됨) -> 프록시 완료 후 진짜를 호출
이곳에 작성한 내용은 인프런에서 서비스하는 강의 중 김영한님의 스프링 강의를 정리하고 저의 언어로 기억하고 싶은 것을 정리한 내용입니다. 아래에 출처를 남겨두겠습니다.
https://www.inflearn.com/roadmaps/373
[초급~중급] 우아한형제들 기술이사 김영한의 스프링 완전 정복 - 인프런 | 로드맵
대세를 따르세요! 자바 스프링 베스트셀러 우형 최연소 기술이사에게 배우는 스프링 완전 정복 🚩 [사진] 오픈 3개월 만에 수강생 7000+명의 극찬 릴레이 ✨원리와 실무를 한방에, 김영한의 스프
www.inflearn.com
'Spring' 카테고리의 다른 글
[Spring] 스프링 DB 접근 및 테스트, JPA (데이터베이스, 테스트코드, JPA, 스프링 데이터 JPA) (0) | 2022.01.20 |
---|---|
[Spring] 스프링 빈과 의존관계 (스프링 빈에 등록하는 방법, 컴포넌트 스캔, 자바 코드) (0) | 2022.01.18 |
[Spring] 스프링 기본적인 백엔드 개발 예제 및 테스트 (기본적인 구조, 간단한 테스트 케이스 작성) (0) | 2022.01.17 |
[Spring] 스프링 웹 개발의 기본 동작 원리, 개발방법 (정적, MVC, API) (0) | 2022.01.16 |