스프링 컨테이너 기본 전략
스프링 컨테이너는 트랜잭션 범위의 영속성 컨텍스트 전략을 기본으로 사용한다.
즉 트랜잭션의 범위와 영속성 컨텍스트의 생존 범위가 같다는 뜻이다.
트랜잭션을 시작할 때 영속성 컨텍스트를 생성하고 트랜잭션이 끝날 때 영속성 컨텍스트를 종료한다
@Service 에
@Transactional 어노테이션을 사용해서 시작할때
호출한 메소드를 실행하기 직전에 스프링 트랜잭션 AOP가 먼저 동작한다.
스프링 트랜잭션 AOP 는 대상 메소드를 호출하기 직전에 트랜잭션을 시작하고, 대상 메소드가 정상 종료되면 트랜잭션을 커밋하면서 종료한다.
만약 서비스에 repository가 두개가 있고 트랜잭션이 같으면 항상 같은 영속성 컨텍스트를 사용한다.
예를들어
@Transactional
@Service
method {
repo1...
repo2...
}
이라고 가정하면
repo1 과 repo2 는 같은 트랜잭션 범위에 있으므로 같은 영속성 컨텍스트를 사용한다.
정리하자면 조금 더 출어서 이야기하자면 스프링 컨테이너는 스레드마다 각각 다른 트랜잭션을
'개발 > spring' 카테고리의 다른 글
스프링 application context (0) | 2020.02.08 |
---|---|
스프링 부트 스케쥴러 메모 (0) | 2019.06.10 |
spring oauth2.0 jwt 토큰 방식 (5) | 2019.01.21 |
스프링 시큐리티에 대한 이해 (0) | 2019.01.15 |
spring OAuth server 구성 (0) | 2019.01.10 |
댓글