Proxy
2024. 7. 14. 11:01ㆍTIL
✔오늘 배운 중요한 🔑 point
- 프록시(Proxy)는 소프트웨어 디자인 패턴 중 하나로, 다른 객체에 대한 접근을 제어하거나 기능을 확장하기 위해 그 객체의 대리인 역할을 하는 객체이다.
- 프록시가 대리인 역할을 하는 이유는 원래 객체에 대한 접근을 제어하거나 기능을 확장하는 데 있다.
- 프록시는 원래 객체의 대리인으로 호출을 가로채서 부가 작업을 수행한다.
🎯 오늘 배운 내용
프록시(Proxy)는 소프트웨어 디자인 패턴 중 하나로, 다른 객체에 대한 접근을 제어하거나 기능을 확장하기 위해 그 객체의 대리인 역할을 하는 객체이며 Spring Boot에서 프록시는 AOP, @Transactional 등에 사용이 된다.
@Transactional 어노테이션은 Spring 프레임 워크에서 트랜잭션 관리에 사용이 된다
@Service
class WineService {
@Transactional
fun wineExampleOperaiton():String {
return "안녕하세요"
}
}
@Transactional의 동작방식
- 프록시 생성: Spring은 @Transactional이 적용된 빈(bean)에 대해 프록시 객체를 생성
- 메서드 호출 가로채기: 클라이언트가 @Transactional 메서드를 호출하면, 프록시가 이 호출을 가로챔
- 트랜잭션 시작: 프록시는 트랜잭션을 시작. 트랜잭션 시작 시점에 트랜잭션 매니저가 호출되어 새로운 트랜잭션이 시작
- 실제 메서드 실행: 프록시는 원래 객체의 메서드를 호출.
- 트랜잭션 종료: 메서드 실행이 완료되면, 프록시는 트랜잭션을 커밋하거나 롤백. 예외가 발생하면 트랜잭션을 롤백하고, 그렇지 않으면 커밋.
🤔 어떻게 활용할까?
프록시의 주요 역할은 부가기능을 제공하는 것에 있기 때문에 AOP를 활용할때 프록시의 동작방법을 아는것이 중요하다.
📓 오늘의 한줄
"Perseverance is not a long race; it is many short races one after the other."
- Walter Elliot -
'TIL' 카테고리의 다른 글
Cannot convert existing claim value of type 'class java.lang.Integer' to desired type 'class java.lang.String'. 오류 (0) | 2024.07.16 |
---|---|
check & require로 예외처리를 간단하게 (0) | 2024.07.15 |
Crawling (0) | 2024.07.13 |
최종 프로젝트 (1일차) (0) | 2024.07.12 |
Cache을 이용한 성능개선 프로젝트 마무리 (0) | 2024.07.11 |