프록시 기반의 AOP 스프링에서 AOP를 학습할 때 프록시 기반의 AOP란 말을 한 번쯤은 들어봤을 것이다. 현재 스프링은 프록시 기반의 AOP를 구현할 때 CGLIB를 사용하는데, 핵심은 런타임시 프록시 객체를 생성하는 다이나믹 프록시다. 도대체 프록시는 무엇이고, Java의 리플렉션을 사용한 JDK 다이나믹 프록시, CGLIB의 MethodProxy를 사용한 다이나믹 프록시가 어떤 차이가 있는지 알아보자. 프록시 패턴 프록시(Proxy)는 '대리', '중계' 라는 의미다. 클라이언트는 타겟에게 요청을 보내지만 실제로는 프록시가 요청을 대신 받는다. 실제 요청을 수행하는 타겟의 기능은 프록시 손에 달렸다. 위임해서 기능을 수행할 수도 있고, 위임하지 않고 클라이언트에게 다른 응답을 줄 수도 있다. 실제..
AOP (Aspect Oriented Programming) 들어가며 공통 관심사항(cross cutting concern) vs 핵심 관심사항(core concern) 분리 핵심 기능에 부가 기능(ex. 호출 시간 측정, 트랜잭션)을 추가했다. 핵심 기능을 담당하는 코드에서 흩어져 나타나는 부가 기능 코드는, 말 그대로 부가적이기 때문에 적용이 되는 대상(Target)이 있어야 의미가 있다. 두 기능을 무조건 분리하기가 애매하다. 부가 기능을 여러 메소드에서 공통으로 사용한다고 해보자. 부가 기능 코드가 중복된다. 요구사항이 변경되서 부가 기능 코드를 수정해야 한다. 여러 메소드에서 사용한 부가 기능 코드를 일일히 수정해야 한다. 위 상황에서 하나의 관심, 핵심 비즈니스 로직에만 집중하는 단일 책임의 ..
IoC 제어의 역전(Inversion of Control)? 나 자신이 제어권을 가지고 있지 x, 나 이외의 누군가가 의존성에 대한 제어권을 가지고 있다. 어떤 객체가 사용하는 의존 객체를 직접 만들어서 사용하는게 아니라 주입 받아서 사용하는 것을 말한다. 1. 의존성에 대한 제어권 일반적인 경우 "내가 쓸 놈은 내가 만들어 쓸게" class OwnerController { private OwnerRepository repository = new OwnerRepository(); } OwnerController가 OwnerRepository를 생성한다. 의존성에 대한 제어권 => 본인(OwnerController) IoC : 역전된 경우 "내가 쓸 놈은 이 놈인데... 누군가 알아서 주겠지" class ..
- Total
- Today
- Yesterday
- FileNameFilter
- hls.js
- MPEG-2 TS
- file
- 정규표현식 플래그
- getCanonicalPath
- github actions 기초
- 정규경로
- websocket handshake
- HtmlUtils
- 문자열인코딩과 문자집합의 차이
- sockjs
- opencsv
- csv 라이브러리
- self-descriptive
- 다이나믹프록시
- 그런RESTAPI로괜찮은가
- 정규표현식 패턴
- csv to bean
- java8 stream
- AOP
- Best Time to Buy and Sell Stock
- getPath
- 특수문자 치환
- 코프링
- github actions components
- CGLIB프록시
- github actions 구성요소
- getAbsolutePath와
- Longest Consecutive Sequence
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |