2016-10-14 5 views
0

Spring起動アプリケーションで@Transactionalアノテーションは@EnableTransactionManagementを明示的に指定せずに動作します。springを使ったSpringブート@Transactionalはトランザクション管理を有効にしないで動作します

自動的に有効になっているという公式の文書はありますか?

他に何か起こっていることは....?

ところで:タグあなたの春のXML構成である:「注釈ドリブン/> < TXが」あれば私は正常に動作することができます春データ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ブートはDataSourceを構成し、(後者の場合)Hibernateを起動し、トランザクション管理を構成します。

すべての「Enable」注釈を明示的に設定する必要はありません。検証するためにチェックできるものが妥当な量であれば、それを構成することは理にかなっています。この場合、DataSourceがある場合は、おそらくトランザクションが必要です。 JPA(およびJTAインフラストラクチャ)がない場合は、おそらくJpaTransactionManagerが必要です。自動設定する場合は、@Transactionalを使用するのが最も簡単な方法ですので、その場合も有効にします。

私はあなたに何らかの「公式」回答を求めてきたと思います。

0

@SpringBootApplicationそれはあなたのクラスパスに春データJPAを検出@EnableAutoConfigurationを追加します。それによるとSpring Register PlatformTransactionManager - JpaTransactionManager、datasource、entitymanager、repositories。

正確な記事はありませんが、スタックには適切なanswerがあります。公式のスプリングサンプルarticle

+0

答えをありがとう –

関連する問題