ich Fehler erhalten Sie beim Versuch, Frühling Transaktionen zu verwenden:Spring verwendet „transaction“, obwohl ein anderes angegeben wurde
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'transactionManager' is defined: No matching PlatformTransactionManager bean found for qualifier 'transactionManager' - neither qualifier match nor bean name match!
Obwohl ich einen anderen Namen angegeben haben. Hier ist Code-Schnipsel:
@EnableTransactionManagement
public class TransactionConfig {
...
@Bean
@Qualifier(value ="jpaTransactionManager")
public PlatformTransactionManager jpaTransactionManager(EntityManagerFactory emf) {
JpaTransactionManager tm = new JpaTransactionManager();
tm.setEntityManagerFactory(emf);
tm.setDataSource(primaryDataSource());
return tm;
}
@Bean()
@Qualifier(value="jtaTransactionManager")
public JtaTransactionManager jtaTransactionManager(UserTransactionManager atomikosTransactionManager) {
......
Und ich benutze es wie folgt aus:
@Transactional(transactionManager="jpaTransactionManager")
public class UserService {
public Iterable<FVUser> findWithQuery(Specification<FVUser> spec) {
return repository.findAll(spec);
}
Repository:
@Repository
public interface UserRepository extends PagingAndSortingRepository<FVUser, String>, JpaSpecificationExecutor<FVUser> {
Beim Debuggen Ich habe bemerkt, dass es richtig verwendet "jpaTransactionManger" Service-Methode aufrufen , scheint aber nach einem "transactionManager" zu suchen, um die Repository-Methode aufzurufen, obwohl für sie keine Transaktion angegeben ist.
Wer weiß warum Spring sucht in diesem Fall nach Standard "transactionManager" Bohne?
Danke.
Ja. Das war die Lösung. Vielen Dank. – csm86