/ / spring-boot: automatyczna konfiguracja menedżera transakcji - wiosna, źródło danych, wiosenny rozruch

spring-boot: automatyczna konfiguracja menedżera transakcji - wiosna, źródło danych, wiosenny rozruch

Wygląda na to, że czegoś mi brakuje: Automatyczne wstrzykiwanie źródła danych działa, ale wstrzyknięcie DataSourceTransactionManager kończy się niepowodzeniem.

Zależności:

<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>

Kod:

@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);
}
}

Spodziewałem się, że zajmie się to DataSourceTransactionManagerAutoConfiguration, ale nie ma żadnych wskazówek?

Próbka do góry jest na github: https://github.com/jangalinski/springboot-playground

Odpowiedzi:

8 dla odpowiedzi № 1

Spring Boot rejestruje się PlatformTransactionManager fasoli, a ty próbujesz wstrzyknąć DataSourceTransactionManager. Jeśli przejdziesz na właściwą klasę, zadziała ona po wyjęciu z pudełka:

@Autowired
private PlatformTransactionManager transactionManager;