프록시(Proxy)란?

2024. 9. 5. 12:03·이론공부/개념

프록시의 개념

프록시는 실제 객체에 대한 접근을 제어하기 위해 사용되는 중간 객체로 이를 통해 클라이언트는 프록시 객체를 통해 실제 객체의 메서드를 호출하게 되며, 프록시는 요청을 처리하거나 추가적인 작업을 한 뒤 실제 객체에 전달한다.

Spring에서의 프록시 사용

Spring에서는 AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)를 사용하여 트랜잭션 처리, 보안, 로깅 등의 횡단 관심사를 처리하는데, 이때 프록시를 사용, @Transactional 어노테이션을 사용하면 Spring이 해당 메서드에 프록시 객체를 만들어서 트랜잭션을 관리

프록시의 동작 방식

  1. 클라이언트가 프록시 객체의 메서드를 호출.
  2. 프록시는 요청을 가로채고, 메서드 호출 전에 추가 로직을 실행할 수 있음.
    • 예를 들어, 트랜잭션을 시작하거나, 로깅을 기록하는 등의 작업.
  3. 프록시는 실제 객체의 메서드를 호출.
  4. 호출된 메서드의 결과를 프록시가 다시 받아 후처리 작업을 할 수 있음.
    • 예를 들어, 트랜잭션을 커밋하거나 롤백하는 작업.
  5. 마지막으로 결과를 클라이언트에게 반환.

프록시의 종류

  1. JDK 동적 프록시:
    • 인터페이스를 구현한 객체에 대해 프록시를 생성합니다. 인터페이스 기반으로 프록시를 만드는 방식입니다.
  2. 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
'이론공부/개념' 카테고리의 다른 글
  • DB 인덱싱(Database Indexing)
  • 기술면접 준비(2)
  • 기술면접 준비(1)
  • 혼자공부하는 컴퓨터 구조와 운영체제 Ch1~5
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 이론공부
        • 자격증
        • 개념
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    개발로드맵
    Java this
    java enhance switch
    자료구조
    데이터 타입
    java기초
    java super
    java two-pointer
    java 에라토스테네스의 체
    java 제어자
    java 세수의합
    java 유클리드 호제법
    java 메서드
    데이터 크기
    java 멤버
    프로그래머스 java 기초 트레이닝
    java arrays.copyofrnage()
    프로그래머스 java 기초트레이닝
    Java 생성자
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
프록시(Proxy)란?
상단으로

티스토리툴바