프록시의 개념
프록시는 실제 객체에 대한 접근을 제어하기 위해 사용되는 중간 객체로 이를 통해 클라이언트는 프록시 객체를 통해 실제 객체의 메서드를 호출하게 되며, 프록시는 요청을 처리하거나 추가적인 작업을 한 뒤 실제 객체에 전달한다.
Spring에서의 프록시 사용
Spring에서는 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)를 사용하여 트랜잭션 처리, 보안, 로깅 등의 횡단 관심사를 처리하는데, 이때 프록시를 사용, @Transactional 어노테이션을 사용하면 Spring이 해당 메서드에 프록시 객체를 만들어서 트랜잭션을 관리
프록시의 동작 방식
- 클라이언트가 프록시 객체의 메서드를 호출.
- 프록시는 요청을 가로채고, 메서드 호출 전에 추가 로직을 실행할 수 있음.
- 예를 들어, 트랜잭션을 시작하거나, 로깅을 기록하는 등의 작업.
- 프록시는 실제 객체의 메서드를 호출.
- 호출된 메서드의 결과를 프록시가 다시 받아 후처리 작업을 할 수 있음.
- 예를 들어, 트랜잭션을 커밋하거나 롤백하는 작업.
- 마지막으로 결과를 클라이언트에게 반환.
프록시의 종류
- JDK 동적 프록시:
- 인터페이스를 구현한 객체에 대해 프록시를 생성합니다. 인터페이스 기반으로 프록시를 만드는 방식입니다.
- CGLIB 프록시:
- 인터페이스가 없는 클래스도 프록시를 생성할 수 있도록 클래스 자체를 상속받아 프록시를 만듭니다. 일반 클래스에도 적용할 수 있습니다.
프록시의 장점
- 관심사 분리: 트랜잭션 처리나 로깅, 보안 등을 비즈니스 로직과 분리하여 관리할 수 있다.
- 동적 기능 추가: 실제 객체에 추가적인 기능(로깅, 트랜잭션 등)을 동적으로 적용할 수 있다.
'이론공부' 카테고리의 다른 글
DB 인덱싱(Database Indexing) (0) | 2024.11.10 |
---|---|
기술면접 준비(2) (1) | 2024.09.30 |
기술면접 준비(1) (1) | 2024.09.05 |
혼자공부하는 컴퓨터 구조와 운영체제 Ch1~5 (0) | 2024.06.14 |
개발로드1. 인터넷의 작동원리 (0) | 2024.05.09 |