본문 바로가기
반응형

Framework & Lib26

스프링의 트랜잭션 추상화 트랜잭션 추상화우리는 추상화가 "공통적인 것을 취하고 차이점을 배제하는 것"이라는걸 잘 알고 있다.추상화를 통해 공통적인 부분을 분리하여 처리하도록 한다면 차이점에 대해서만 집중하여 개발을 할 수 있다.트랜잭션 추상화에서 적용된 공통점은 트랜잭션 처리이고, 차이점은 비즈니스 로직이다. 아래 코드를 보자.override fun create(member: Member) { val status = transactionManager.getTransaction(DefaultTransactionDefinition()) try { // 비즈니스 로직 val id = memberRepo.create(member) memberRepo.addRole(MemberRole(id, "USER".. 2024. 6. 25.
AbstractRoutingDataSource에서 Transactional readonly값 false만 리턴하는 오류 해결 문제 상황connection 경로를 결정하는 AbstractRoutingDataSource에서 현재 실행중인 트랜잭션의 readonly 값을 읽어와 readonly=true 이면 slave db로 경로를 결정하고, readonly=false이면 master db로 경로를 결정하는데AbstractRoutingDataSource의 구현체에서 TransactionSynchronizationManager.isCurrentTransactionReadOnly()를 호출하면 false만 리턴이됨 문제 원인 PlatformTransactionManager가 커넥션 경로를 먼저 설정하고 이후에 트랜잭션 상태를 설정함.따라서 커넥션 경로를 설정하는 시점에 트랜잭션 상태가 정의되어있지 않아 default로 false만 반환.. 2024. 6. 16.
스프링 빈 생성 과정 분석 [3] - BeanFactoryPostProcessor, BeanPostProcessor [스프링 빈 생성 과정 분석 시리즈]스프링 빈 생성 과정 분석 [1] - Application Context(BeanFactory)스프링 빈 생성 과정 분석 [2] - BeanDefinitionRegistry, SingletonBeanRegistry스프링 빈 생성 과정 분석 [3] - BeanFactoryPostProcessor, BeanPostProcessor스프링 빈 생성 과정 분석 [4] - 디버깅 참고 자료 이전 포스팅에서 BeanDefinitionRegsitry와 SingletonRegistry에 관련하여 빈 생성과정에 대해 설명하였다. 이번 포스팅에서는 아래 굵은 글씨로 밑줄친 내용에 대해 알아볼 것이다. 1) 생성할 빈의 BeanDefition 정의 2) BeanFactory.. 2024. 4. 20.
스프링 빈 생성 과정 분석 [2] - BeanDefinitionRegistry, SingletonBeanRegistry [스프링 빈 생성 과정 분석 시리즈]스프링 빈 생성 과정 분석 [1] - Application Context(BeanFactory)스프링 빈 생성 과정 분석 [2] - BeanDefinitionRegistry, SingletonBeanRegistry스프링 빈 생성 과정 분석 [3] - BeanFactoryPostProcessor, BeanPostProcessor스프링 빈 생성 과정 분석 [4] - 디버깅 참고 자료 지난 포스팅에서 스프링 빈을 생성하는 주체인 application context가 어떻게 이루어져 있는지 알아보았다.이번 포스팅에서는 본격적으로 스프링 빈이 어떻게 생성되는지 그 과정을 알아보도록 하겠다. 1. 빈 생성 과정스프링 빈 생성과정에 대해 간단히 소개 하겠다. 1) 생성할 .. 2024. 4. 20.
반응형