Proxy

2024. 7. 14. 11:01TIL

✔오늘 배운 중요한 🔑 point

  • 프록시(Proxy)는 소프트웨어 디자인 패턴 중 하나로, 다른 객체에 대한 접근을 제어하거나 기능을 확장하기 위해 그 객체의 대리인 역할을 하는 객체이다.
  • 프록시가 대리인 역할을 하는 이유는 원래 객체에 대한 접근을 제어하거나 기능을 확장하는 데 있다.
  • 프록시는 원래 객체의 대리인으로 호출을 가로채서 부가 작업을 수행한다.

🎯 오늘 배운 내용

 

프록시(Proxy)는 소프트웨어 디자인 패턴 중 하나로, 다른 객체에 대한 접근을 제어하거나 기능을 확장하기 위해 그 객체의 대리인 역할을 하는 객체이며 Spring Boot에서 프록시는 AOP, @Transactional 등에 사용이 된다.

 

@Transactional 어노테이션은 Spring 프레임 워크에서 트랜잭션 관리에 사용이 된다

@Service
class WineService {

    @Transactional
    fun wineExampleOperaiton():String {
    
    return "안녕하세요"
    }
}

 

@Transactional의 동작방식

 

  1. 프록시 생성: Spring은 @Transactional이 적용된 빈(bean)에 대해 프록시 객체를 생성
  2. 메서드 호출 가로채기: 클라이언트가 @Transactional 메서드를 호출하면, 프록시가 이 호출을 가로챔
  3. 트랜잭션 시작: 프록시는 트랜잭션을 시작. 트랜잭션 시작 시점에 트랜잭션 매니저가 호출되어 새로운 트랜잭션이 시작
  4. 실제 메서드 실행: 프록시는 원래 객체의 메서드를 호출.
  5. 트랜잭션 종료: 메서드 실행이 완료되면, 프록시는 트랜잭션을 커밋하거나 롤백. 예외가 발생하면 트랜잭션을 롤백하고, 그렇지 않으면 커밋.

 

 

🤔 어떻게 활용할까?

프록시의 주요 역할은 부가기능을 제공하는 것에 있기 때문에 AOP를 활용할때 프록시의 동작방법을 아는것이 중요하다.

📓 오늘의 한줄

"Perseverance is not a long race; it is many short races one after the other."

- Walter Elliot -