有沒有一種快速簡便的方法讓ComamandLineRunner應用程序擁有一個事務管理器?我有以下設置:如何在非網頁Spring Boot Appllication中獲得事務管理器?
@EnableAutoConfiguration(exclude={WebMvcAutoConfiguration.class})
和
spring.main.web_environment=false
在application.properties
。當我運行代碼:
ConfigurableApplicationContext context = application.run();
context.close();
我看到這一點:
2014-10-26 11:00:59.956 INFO 4900 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
我看到SQL從JPA庫我做了呼應,但沒有事務被提交到數據庫。我試着把東西變成一個服務,把事情做成@Transactional等。我似乎沒有得到一個存在的東西。
更新1: 萬一它很重要我使用1.2.0.M2。我懷疑@EnableAutoConfiguration仍然沒有成功。調試輸出有這樣的:
JpaBaseConfiguration#entityManagerFactory
- @ConditionalOnMissingBean (types: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; SearchStrategy: all) found no beans (OnBeanCondition)
JpaBaseConfiguration#entityManagerFactoryBuilder
- @ConditionalOnMissingBean (types: org.springframework.boot.autoconfigure.orm.jpa.EntityManagerFactoryBuilder; SearchStrategy: all) found no beans (OnBeanCondition)
JpaBaseConfiguration#jpaVendorAdapter
- @ConditionalOnMissingBean (types: org.springframework.orm.jpa.JpaVendorAdapter; SearchStrategy: all) found no beans (OnBeanCondition)
JpaBaseConfiguration#transactionManager
- @ConditionalOnMissingBean (types: org.springframework.transaction.PlatformTransactionManager; SearchStrategy: all) found no beans (OnBeanCondition)
application.properties有一個spring.datasource設置和Hibernate獲取正確的方言。我使用標記爲@Transactional的方法創建了一個@Service類。但它仍然沒有得到承諾。
工作,如果不包括web類的例外是沒有意義的。 Spring Boot將檢測類路徑上的內容,並根據配置情況進行配置。這包括JPA,Spring Data JPA和事務。確保你在那些需要事務處理的方法上有'@ Transactional',否則它不會是事務性的。 – 2014-10-27 06:47:55