일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그리디
- Proxy
- QueryDSL
- JPQL
- db
- 백준
- transaction
- Android
- AOP
- 인프런
- Servlet
- JDBC
- 김영한
- jpa
- 스프링 핵심 기능
- Exception
- Spring Boot
- http
- spring
- SpringBoot
- 자바
- pointcut
- 스프링 핵심 원리
- kotlin
- Greedy
- 스프링
- java
- Thymeleaf
- springdatajpa
- 알고리즘
- Today
- Total
목록dynamic proxy (2)
개발자되기 프로젝트
빈 후처리기를 사용해서 실제 객체 대신 프록시를 스프링 빈으로 등록해보자. 이렇게 하면 수동으로 등록하는 빈은 물론이고, 컴포넌트 스캔을 사용하는 빈까지 모두 프록시를 적용할 수 있다. 더 나아가서 설정 파일에 있는 수 많은 프록시 생성 코드도 한번에 제거할 수 있다. 1. PackageLogTracePostProcessor @Slf4j public class PackageLogTracePostProcessor implements BeanPostProcessor { //특정 패키지 하위의 빈이 대상 private final String basePackage; private final Advisor advisor; public PackageLogTracePostProcessor(String basePack..
지금까지 프록시를 사용해서 기존 코드를 변경하지 않고, 로그 추적기라는 부가 기능을 적용할 수 있었다. 그런데 문제는 대상 클래스 수 만큼 로그 추적을 위한 프록시 클래스를 만들어야 한다는 점이다. 로그 추적을 위한 프록시 클래스들의 소스코드는 거의 같은 모양을 하고 있다... 흠... 자바가 기본으로 제공하는 JDK 동적 프록시 기술이나 CGLIB 같은 프록시 생성 오픈소스 기술을 활용하면 프록시 객체를 동적으로 만들어낼 수 있다. 쉽게 이야기해서 프록시 클래스를 지금처럼 계속 만들지 않아도 된다는 것이다. 프록시를 적용할 코드를 하나만 만들어두고 동적 프록시 기술을 사용해서 프록시 객체를 찍어내면 된다. JDK 동적 프록시를 이해하기 위해서는 먼저 자바의 리플렉션 기술을 이해해야 한다. 리플렉션 기술..