AOP가 필요한 상황
문제
* 회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다.
* 시간을 측정하는 로직은 공통 관심 사항이다.
* 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다.
* 시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다.
* 시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다.
AOP 적용
해결
* 회원가입, 회원 조회 등 핵심 관심사항과 시간을 측정하는 공통 관심 사항을 분리한다.
* 시간을 측정하는 로직을 별도의 공통 로직으로 만들었다.
* 핵심 관심 사항을 깔끔하게 유지할 수 있다.
* 변경이 필요하면 이 로직만 변경하면 된다.
* 원하는 적용 대상을 선택할 수 있다.
AOP 적용 전 의존관계
AOP 적용 후 의존관계
AOP 적용 전 전체 그림
AOP 적용 후 전체 그림
2024.05.14
여러 프로젝트들을 해본 이후, 내실을 다지기 위해 다시 스프링 입문편부터 공부를 하고 있다.
이전과 다른 점은 김영한 강사님은 이 강의에서 데이터베이스로 h2를 사용하셨는데, 이번에는 mySQL을 사용하였다.
그리고 입문편 강의에서 나오는 코드를 모두 친 이후, 아래와 같은 에러가 떴다.
해결을 아래 링크의 글을 참고하였더니 잘 해결되었다.
SpringConfig에 있는 메소드로 인해 timeTraceAop가 순환되는 문제였다.
https://dream-and-develop.tistory.com/393
[Spring] AOP 적용 시 발생하는 순환 참조 문제 해결하기 (The dependencies of some of the beans in the application
오류 발생 상황 AOP에 대해 학습하는 과정에서, 시간 측정 로직을 담은 TimeTraceAop가 Configuration 내에 등록된 Bean인 상황에서, 해당 클래스를 관심 사항으로 따로 분리하여 @Aspect를 적용할 때 순환
dream-and-develop.tistory.com
글에서 나오는 코드와 내용은 김영한님의 인프런 스프링 입문 강의에서 가져온 것을 알립니다.
'👩🏻💻개발 > Spring' 카테고리의 다른 글
[스프링 기본] 섹션 2. 스프링 핵심 원리 이해1 - 예제 만들기 (0) | 2023.09.21 |
---|---|
[스프링 기본] 섹션 1. 객체 지향 설계와 스프링 (0) | 2023.09.18 |
[스프링 입문] 섹션6. 스프링 DB 접근 기술 (0) | 2023.07.27 |
[스프링 입문] 섹션4. 스프링 빈과 의존관계 (0) | 2023.07.25 |
[스프링 입문] 섹션3. 회원 관리 예제 - 백엔드 개발 (0) | 2023.07.18 |