2015-02-22 3 views
8

Похоже, что я чего-то не хватает: автоматическая инъекция источника данных работает, но впрыск DataSourceTransactionManager терпит неудачу.spring-boot: автоконфигурировать диспетчер транзакций

Зависимости:

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.1.RELEASE</version> 
</parent> 
<dependencies> 
    <dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-jdbc</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.h2database</groupId> 
     <artifactId>h2</artifactId> 
    </dependency> 
</dependencies> 

Код:

@SpringBootApplication 
public class MainApplication { 

    @Autowired 
    private DataSource dataSource; 

    // this fails 
    @Autowired 
    private DataSourceTransactionManager transactionManager; 

    public static void main(String... args) { 
    SpringApplication.run(MainApplication.class, args); 
    } 
} 

Я ожидал, что DataSourceTransactionManagerAutoConfiguration будет заботиться о нем, но это не так. Любые подсказки?

Пробу вверх на GitHub: https://github.com/jangalinski/springboot-playground

ответ

8

Spring Загрузочный регистрирующего PlatformTransactionManager боб, и вы пытаетесь придать DataSourceTransactionManager. Если вы перейдете к соответствующему классу, он будет работать из коробки:

@Autowired 
private PlatformTransactionManager transactionManager; 
+2

Хороший, спасибо ... должен был спросить раньше. –

+0

PlatformTransactionManager автоконфигурируется в Spring Boot? Поскольку нам нужно создать компонент bean в Spring. – Deepak

Смежные вопросы