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
- 김영한
- Thymeleaf
- Proxy
- kotlin
- 인프런
- SpringBoot
- 백준
- Spring Boot
- db
- Exception
- spring
- springdatajpa
- pointcut
- JDBC
- Greedy
- JPQL
- 스프링 핵심 기능
- QueryDSL
- Android
- 그리디
- Servlet
- 알고리즘
- 자바
- 스프링
- AOP
- transaction
- java
- 스프링 핵심 원리
- jpa
- http
Archives
- Today
- Total
개발자되기 프로젝트
요구사항 추가 본문
1. 기존 요구사항
- 모든 PUBLIC 메서드의 호출과 응답 정보를 로그로 출력
- 애플리케이션의 흐름을 변경하면 안됨
- 로그를 남긴다고 해서 비즈니스 로직의 동작에 영향을 주면 안됨
- 메서드 호출에 걸린 시간
- 정상 흐름과 예외 흐름 구분
- 예외 발생시 예외 정보가 남아야 함
- 메서드 호출의 깊이 표현
- HTTP 요청을 구분
- HTTP 요청 단위로 특정 ID를 남겨서 어떤 HTTP 요청에서 시작된 것인지 명확하게 구분이 가능해야
함 - 트랜잭션 ID (DB 트랜잭션X)
2. 단점..
- 하지만 이 요구사항을 만족하기 위해서 기존 코드를 많이 수정해야 한다.
- 코드 수정을 최소화 하기 위해 템플릿 메서드 패턴과 콜백 패턴도 사용했지만,
- 결과적으로 로그를 남기고 싶은 클래스가 수백개라면 수백개의 클래스를 모두 고쳐야한다.
- 로그를 남길 때 기존 원본 코드를 변경해야 한다는 사실 그 자체가 개발자에게는 가장 큰 문제로 남는다.
3. 요구사항 추가
- 원본 코드를 전혀 수정하지 않고, 로그 추적기를 적용.
- 특정 메서드는 로그를 출력하지 않는 기능
- 보안상 일부는 로그를 출력하면 안된다.
- 다음과 같은 다양한 케이스에 적용할 수 있어야 한다.
- v1 - 인터페이스가 있는 구현 클래스에 적용
- v2 - 인터페이스가 없는 구체 클래스에 적용
- v3 - 컴포넌트 스캔 대상에 기능 적용
- 가장 어려문 문제는 원본 코드를 전혀 수정하지 않고, 로그 추적기를 도입하는 것이다.
- 이 문제를 해결하려면 프록시(Proxy)의 개념을 먼저 이해해야 한다.
'인프런 > [인프런] 스프링 핵심 원리 - 고급' 카테고리의 다른 글
Proxy Pattern - 예제코드 1 (0) | 2021.11.23 |
---|---|
Proxy, Proxy Pattern, Decorator Pattern (0) | 2021.11.23 |
Proxy Pattern - V3 (0) | 2021.11.23 |
Proxy Pattern - V2 (0) | 2021.11.23 |
Proxy Pattern - V1 (0) | 2021.11.23 |
Comments