Я использую Spring JPA для подключения к базам данных master и slave.
Я создал два менеджера транзакций, один для основной базы данных, другой для подчиненного, назвал их masterTransactionManager и slaveTransactionManager соответственно.
Но когда я пытаюсь использовать свой slaveTransactionManager с помощью аннотации @Transactional, он все еще ищет по умолчанию «actionManager ».
Я пробовал это с параметром value &actionManager аннотации Transactional.
Есть идеи, почему это может произойти?
Ниже мой код: -
@Override
@Transactional(value = "slaveTransactionManager")
public EmailDTO getDataByIdSlave(Long dataId, Long brandId) {
emailDataSlaveRepository.findAll();
return null;
}
Ниже приведен один из моих конфигов данных конфига:
@Configuration
@EnableTransactionManagement
@EnableJpaRepositories(
entityManagerFactoryRef = BeanConstant.SLAVE_ENTITY_MANAGER_FACTORY,
transactionManagerRef = DataConfigConstant.SLAVE_TRANS_MANAGER,
basePackages = {DataConfigConstant.SLAVE_REPO_PACKAGE}
)
public class SlaveDataSourceConfiguration {
@Autowired
@Qualifier(BeanConstant.JPA_REPO)
private Map<String, Object> jpaRepo;
@Bean(BeanConstant.SLAVE_DATA_SOURCE_PROPERTIES)
@ConfigurationProperties(DataConfigConstant.SLAVE_DATA_SOURCE)
public DataSourceProperties slaveDataSourceProperties() {
return new DataSourceProperties();
}
@Bean(name = BeanConstant.SLAVE_DATA_SOURCE)
@ConfigurationProperties(prefix = DataConfigConstant.SLAVE_DATA_SOURCE)
public DataSource slaveDataSource(@Qualifier(BeanConstant.SLAVE_DATA_SOURCE_PROPERTIES) DataSourceProperties dataSourceProperties) {
return dataSourceProperties.initializeDataSourceBuilder().build();
}
@Bean(name = BeanConstant.SLAVE_ENTITY_MANAGER_FACTORY)
public LocalContainerEntityManagerFactoryBean entityManagerFactory(final EntityManagerFactoryBuilder builder,
@Qualifier(BeanConstant.SLAVE_DATA_SOURCE) DataSource dataSource) {
return builder.dataSource(dataSource).properties(jpaRepo).packages(DataConfigConstant.ENTITY_PACKAGE).persistenceUnit
(DataConfigConstant.SLAVE_REPO_PROCESS_NAME).build();
}
@Bean(name = DataConfigConstant.SLAVE_TRANS_MANAGER)
@Qualifier(value = DataConfigConstant.SLAVE_TRANS_MANAGER)
public PlatformTransactionManager barTransactionManager(
@Qualifier(BeanConstant.SLAVE_ENTITY_MANAGER_FACTORY) EntityManagerFactory
barEntityManagerFactory) {
return new JpaTransactionManager(barEntityManagerFactory);
}