@Spring Boot에서의 트랜잭션 관리 활성화
이@EnableTransactionManagement필요한가요?조사를 좀 해봤어요Spring Boot은 이미 활성화 되어 있기 때문에 사용자가 명시적으로 사용해야 한다고 말하는 사람도 있습니다.그래, 어때?
Spring Data도 사용하고 있을 것입니다.Spring 데이터 저장소의 콜은 디폴트로 트랜잭션으로 둘러싸여 있습니다.@EnableTransactionManagementSpring Data가 기존 트랜잭션을 발견하면 기존 트랜잭션이 재사용되고, 그렇지 않으면 새로운 트랜잭션이 생성됩니다.
@Transactional그러나, 사용자 자신의 코드 내의 주석은 다음과 같은 경우에만 평가됩니다.@EnableTransactionManagement활성화(또는 설정된 트랜잭션을 처리하는 다른 방법).
트랜잭션 동작을 추적하려면 다음 속성을 다음 위치에 추가합니다.application.properties:
logging.level.org.springframework.transaction.interceptor=TRACE
(로그에 스프링 트랜잭션 표시 참조)
> https://spring.io/guides/gs/managing-transactions/에 따르면
Spring Boot은 클래스 경로 및 h2에서 spring-jdbc를 검출하여 자동으로 DataSource와 JdbcTemplate를 만듭니다.이러한 인프라스트럭처를 이용할 수 있게 되어 전용 설정이 없기 때문에 Data Source Transaction Manager도 생성됩니다.이것은 @Transactional 주석 메서드를 대행 수신하는 컴포넌트입니다.
또한 spring-boot-starter-actuator를 사용하여 컨텍스트에서 작성된 콩을 나열할 수도 있습니다.
bean" : "transaction Manager"
오래된 작은 게시물이지만, 제가 검색했을 때 이전에 받은 답변은 간단하지 않았습니다.
@EnableTransactionManagementspring-data* 또는 spring-tx가 클래스 패스에 있는 경우 스프링 부트에서는 옵션입니다.어떻게 작동합니까?이하와 같습니다.
스프링 부트는 클래스 경로에 spring-boot-autoconfigure.jar를 추가합니다.META-INF의 spring.factories 파일에 접속하면org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration거기에 기입해 주세요.트랜잭션 자동 설정이 초기화됩니다.
클래스에는 다음 행이 있습니다(스니펫).
@Configuration
@ConditionalOnClass({PlatformTransactionManager.class})
@AutoConfigureAfter({JtaAutoConfiguration.class, HibernateJpaAutoConfiguration.class, DataSourceTransactionManagerAutoConfiguration.class, Neo4jDataAutoConfiguration.class})
@EnableConfigurationProperties({TransactionProperties.class})
public class TransactionAutoConfiguration {
..
}
봐주세요TransactionAutoConfiguration거래 지원을 가능하게 하는 것을 확인합니다.PlatformTransactionManager는 클래스 경로에서 사용할 수 있습니다. EnableTransactionManagementConfiguration이 설정도 되어 있습니다.
아니요.@EnableTransactionManagement는 디폴트로 켜져 있습니다.https://github.com/jkubrynski/spring-boot/commit/9d219ef7a004c58a88bbbef82a520a22961c9402 를 참조해 주세요.
@EnableTransactionManagement는 클래스 패스에 추가한 의존관계 자에 따라 조건부로 온/오프됩니다.spring data jpa starter를 사용하면 전원이 켜집니다.
중 ★★★★★★★★★★★★★★.org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration1.5 스프링 부트 1.5+)가.
@Configuration
@EnableTransactionManagement(proxyTargetClass = false)
@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "false", matchIfMissing = false)
public static class JdkDynamicAutoProxyConfiguration {
}
@Configuration
@EnableTransactionManagement(proxyTargetClass = true)
@ConditionalOnProperty(prefix = "spring.aop", name = "proxy-target-class", havingValue = "true", matchIfMissing = true)
public static class CglibAutoProxyConfiguration {
}
은 "Default"spring.aop.proxy-target-class=trueCGLIB를 사용하다프록시를 는, JDK 를 합니다.spring.aop.proxy-target-class=false★★★★★★ 。
언급URL : https://stackoverflow.com/questions/40724100/enabletransactionmanagement-in-spring-boot
'programing' 카테고리의 다른 글
| Oracle SQL Developer에서 tnsnames.ora 사용 (0) | 2023.03.05 |
|---|---|
| 격리 범위를 가진 지시문 템플릿에서 $rootScope에 액세스할 수 없는 이유는 무엇입니까? (0) | 2023.03.05 |
| 왜 Redx의 오브젝트는 불변이어야 합니까? (0) | 2023.03.05 |
| JavaScript를 사용한 오버플로 DIV 스크롤 (0) | 2023.03.05 |
| 봄과 단검이 있는데 왜 기스를 사용/개발합니까? (0) | 2023.03.05 |