Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 불친절한SQL프로그래밍
- 불친절한 SQL 프로그래밍
- REGEXP_SUBSTR
- 스프링입문
- 자바공부
- 서블릿
- 자바의정석
- Java의정석
- 이것이자바다
- 스프링 부트와 JPA
- 자바연습문제
- 항해플러스 백엔드
- inflearn
- 시큐어코딩
- 항해플러스
- 스프링 핵심원리
- docker
- 스프링MVC
- java
- Numpy
- Python
- 인프런
- JPA
- 스프링
- 분석함수
- 제네릭
- 자바의정석 연습문제
- Secure Coding
- Spring
- 김영한
Archives
- Today
- Total
Continuous Challenge
7. AOP 본문
728x90
728x90
1. AOP가 필요한 상황
- 모든 메소드의 호출 시간을 측정하고 싶다면?
- 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern)
- 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면?
문제
- 회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다.
- 시간을 측정하는 로직은 공통 관심 사항이다.
- 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다.
- 시간을 측정하는 로직을 별도의 공통 로직으로 만들기 매우 어렵다.
- 시간을 측정하는 로직을 변경할 때 모든 로직을 찾아가면서 변경해야 한다.
2. AOP 적용
- AOP: Aspect Oriented Programming
- AOP파일에는 @Aspect 애노테이션을 사용해야 함
- @Component 또는 SpringConfig 파일에 Bean 등록 (보통 Bean으로 등록해서 사용함)
해결
- 회원가입, 회원 조회등 핵심 관심사항과 시간을 측정하는 공통 관심 사항을 분리한다.
- 시간을 측정하는 로직을 별도의 공통 로직으로 만들었다.
- 핵심 관심 사항을 깔끔하게 유지할 수 있다.
- 변경이 필요하면 이 로직만 변경하면 된다.
- 원하는 적용 대상을 선택할 수 있다
728x90
728x90
'Spring > 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MV' 카테고리의 다른 글
6. 스프링 DB 접근 기술 (0) | 2022.03.11 |
---|---|
5. 스프링 빈과 의존관계 (0) | 2022.03.08 |
4. 회원 관리 예제 - 백엔드 개발 (0) | 2022.03.08 |
3. 스프링 웹 개발 기초 (0) | 2022.03.07 |
2. 프로젝트 환경 설정 - Build 실행하기 (0) | 2022.03.06 |
Comments