2014-10-26 87 views
1

有沒有一種快速簡便的方法讓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類。但它仍然沒有得到承諾。

+0

工作,如果不包括web類的例外是沒有意義的。 Spring Boot將檢測類路徑上的內容,並根據配置情況進行配置。這包括JPA,Spring Data JPA和事務。確保你在那些需要事務處理的方法上有'@ Transactional',否則它不會是事務性的。 – 2014-10-27 06:47:55

回答

0

Spring Boot將在配置JPA時自動創建事務管理器。檢查類JpaBaseConfiguration中的方法transactionManager

請注意,此設置與應用程序是否爲Web應用程序無關。

因此,使用@Transactional Spring Bean中會正確

+0

所以我懷疑@EnableAutoConfiguration仍然沒有做到這一點。調試輸出有: – 2014-10-27 15:38:33

+0

你可以顯示使用'@ Transactional'的代碼不工作嗎? – geoand 2014-10-27 17:17:50

+0

因此,經過進一步的審查,並將春季啓動日誌記錄添加到事務處理器中,情況正常。我有一些額外的基於註釋的配置選項是衝突的。一旦我拿走了那些實體管理器事務在服務中正確裝備。 – 2014-10-27 21:43:01