작성
·
74
0
public class OrderService$$EnhancerBySpringCGLIB extends OrderService {
private final OrderService target; // 실제 대상 객체 (원본 OrderService)
private final TransactionManager transactionManager; // 트랜잭션 매니저
//의존 관계를 주입 받았다 가정
@Override
public void order(Order order) throws Exception {
TransactionStatus transactionStatus = null;
try {
// 트랜잭션 시작
transactionStatus = transactionManager.beginTransaction();
// 실제 비즈니스 로직 호출 (OrderService의 order 메서드)
target.order(order);
// 정상적으로 완료된 경우 트랜잭션 커밋
transactionManager.commit(transactionStatus);
} catch (RuntimeException e) {
// 언체크 예외(RuntimeException): 자동 롤백
transactionManager.rollback(transactionStatus);
throw e; // 예외 다시 던지기
} catch (Exception e) {
// 체크 예외: 기본적으로 커밋
transactionManager.commit(transactionStatus); // 트랜잭션 커밋
throw e; // 예외를 호출자에게 다시 전달
}
}
}
강의에서 생성되는 프록시 객체의 형태는 정확하진 않지만 대략적으로 위와 같다고 생각해도 될까요?