2016-10-14 4 views
0

스프링 부트 응용 프로그램에서 spring @Transactional annotation은 @EnableTransactionManagement를 명시 적으로 지정하지 않고 작동합니다.스프링으로 봄 부팅 @Transactional 트랜잭션 관리를 사용하지 않고 작동합니다.

자동으로 활성화된다는 공식 문서가 있습니까?

아니면 다른 일이 있습니다 .... ....?

BTW : 태그 Spring XML 설정에 다음 "주석 중심의 /> < 텍사스는"만약 내가 잘 작동 할 수 스프링 데이터 JPA

+0

클래스 패스에 spring-jdbc가 있습니까? 그렇다면 스프링 부트 자동 구성은 [DataSourceTransactionManager] (https://github.com/spring-projects/spring-boot/blob/master/spring-boot-autoconfigure/src/main/java/org/springframework/boot)를 만듭니다. /autoconfigure/jdbc/DataSourceTransactionManagerAutoConfiguration.java) – anders

+0

@anders 주석 주셔서 감사합니다. 공식 문서를 참조 할 수 있습니까? –

답변

3

예, 응용 프로그램에 spring-tx 및 일부 트랜잭션 리소스가있는 경우 가능합니다. spring-boot-starter-jdbc 또는 spring-boot-starter-data-jpa을 사용하는 경우, Spring Boot는 DataSource을 구성하고, (후자의 경우) 최대 절전 모드를 시작하고 트랜잭션 관리를 구성합니다.

모든 "Enable"주석을 명시 적으로 설정해야하는 것은 아닙니다. 유효성을 검사 할 수있는 합리적인 양의 항목이있는 경우이를 구성하는 것이 합리적입니다. 이 경우 DataSource이 있으면 거래가 필요할 수 있습니다. JPA (및 JTA 인프라 없음)가있는 경우 JpaTransactionManager이 필요합니다. 자동 구성을 사용하는 경우 가장 쉬운 방법은 @Transactional입니다. 따라서이 경우에도 사용할 수 있습니다.

당신은 일종의 "공식적인"답변을 얻으려고 계속했습니다. 그래서 여기 있습니다.

0

@SpringBootApplication는 클래스 패스에 스프링 데이터 JPA를 감지 @EnableAutoConfiguration을 추가합니다. 그것에 따르면 Spring 등록 PlatformTransactionManager - JpaTransactionManager, datasource, entitymanager, repositories.

정확한 기사가 있는지 모르지만 스택에 적절한 answer이 있습니다. 공식 스프링 샘플 article

+0

답해 주셔서 감사합니다. –