AOP 3

@Transactional 동작 원리

용어 정리 트랜잭션 관리에는 크게 두 가지 방법이 있습니다. 선언 방식의 트랜잭션 관리 프로그래밍 방식의 트랜잭션 관리 선언적 트랜잭션 관리 @Transactional 애노테이션 하나만 선언해서 편리하게 트랜잭션을 적용하는 방법 "트랜잭션을 적용하겠다"라고 메서드나 서비스에 선언하기만 하면 AOP를 통해 트랜잭션이 적용되는 방식 프로그래밍 방식의 트랜잭션 관리 PlatformTransactionManager 또는 TransactionTemplate 등을 통해 트랜잭션 관련 코드를 직접 작성하는 방법 이번 게시글에서는 선언적 트랜잭션 관리의 동작 원리에 대해 알아보겠습니다. Transaction AOP 전체 흐름 @Transactional 애노테이션이 선언되면 AOP를 통해 트랜잭션이 적용되므로 Trans..

Spring 2023.03.29

[SpringBoot] AOP 간단 정리

개요 AOP(Aspect-Oriented Programming)은 IOC(Inversion Of Control), DI(Dependency Injection)와 함께 스프링 프레임워크의 핵심 요소로 거론됩니다. 이번 게시글에서는 AOP에 대해 간단히 알아보겠습니다. 본문을 읽기에 앞서 아래 게시글을 먼저 훑어보시는 것을 추천드립니다. https://jaimemin.tistory.com/2025 [디자인 패턴] JDK 동적 프록시와 CGLIB 개요 기존에 정리한 프록시 패턴(https://jaimemin.tistory.com/2016)을 통해 기존 코드를 변경하지 않고 부가적인 기능을 추가할 수 있는 장점이 있었지만 비슷한 구조를 갖는 프록시 클래스를 계속 생성 jaimemin.tistory.com htt..

Spring 2022.01.12

[SpringBoot] ProxyFactory 정리 (feat. Advisor)

개요 저번 게시글에서 JDK 동적 프록시와 CGLIB(https://jaimemin.tistory.com/2025)에 대해서 정리했는데 요약을 하자면 인터페이스가 있는 경우에는 JDK 동적 프록시를 적용하고, 그렇지 않은 경우에는 CGLIB가 적용되는 것을 확인할 수 있었습니다. 보통 프로젝트를 개발할 때 인터페이스와 클래스를 혼용해서 사용하기 때문에 두 기술을 함께 사용하는데, 그렇다면 "부가기능을 제공하기 위해 JDK 동적 프록시가 제공하는 InvocationHandler와 CGLIB가 제공하는 MethodInterceptor를 중복으로 생성해서 관리해야 할까?"라는 의구심이 생겼습니다. 다행히도 스프링에서는 위와 같이 복잡한 방식 말고 동적 프록시를 통합해서 편리하게 생성해주는 ProxyFactor..

Spring 2021.12.16