Исправить конфигурацию источника данных Junit h2JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Исправить конфигурацию источника данных Junit h2

Сообщение Anonymous »


У меня есть проект Spring с базой данных Oracle со следующей конфигурацией:

@Configuration @PropertySource({"путь к классу:application.properties"}) @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef = "oracleEntityManagerFactory", transactionManagerRef = "oracleTransactionManager", базовые пакеты = { "com.dsi.system.baseinfo.repositories", "com.dsi.system.repositorieslib.*" } ) @RequiredArgsConstructor общественный класс OracleDataSourceConfiguration { частный окончательный JpaProperties jpaProperties; @Бин @ConfigurationProperties("spring.datasource.sample") public DataSourceProperties PrimaryDataSourceProperties() { вернуть новые свойства источника данных(); } @Bean(name = "primaryDataSource") @ConfigurationProperties("spring.datasource.sample.configuration") общедоступный источник данных PrimaryDataSource() { вернуть первичные свойства источника данных() .initializeDataSourceBuilder() .type(HikariDataSource.class) .пароль("123") .строить(); } @Начальный @Bean(name = "oracleEntityManagerFactory") public LocalContainerEntityManagerFactoryBean oracleEntityManagerFactory() { HibernateJpaVendorAdaptervendorAdapter = новый HibernateJpaVendorAdapter(); HashMap Properties = jpaProperties.getJPAProperties("образец"); LocalContainerEntityManagerFactoryBean em = новый LocalContainerEntityManagerFactoryBean (); em.setDataSource(primaryDataSource()); em.setPackagesToScan( "com.dsi.system.core.entities", "com.dsi.system.core.sign.entity", "com.dsi.system.baseinfo.entities" ); em.setPersistenceUnitName("образец"); em.setJpaVendorAdapter(vendorAdapter); em.setJpaPropertyMap(свойства); вернуть их; } @Начальный @Bean(name = "oracleTransactionManager") общедоступный PlatformTransactionManager oracleTransactionManager( окончательный @Qualifier("checkEntityManagerFactory") LocalContainerEntityManagerFactoryBean checkEntityManagerFactory) { JpaTransactionManagertransactionManager = новый JpaTransactionManager(); транзакцииManager.setEntityManagerFactory(checkEntityManagerFactory.getObject()); вернуть менеджер транзакции; } } и я хочу создать свой Junit с базой данных H2, и это моя конфигурация H2DataSourceConfiguration:

@Configuration @RequiredArgsConstructor @EnableTransactionManagement @EnableJpaRepositories( entityManagerFactoryRef = "h2EntityManagerFactory", транзакцияManagerRef = "h2TransactionManager", базовые пакеты = { "com.dsi.system.baseinfo.repositories", "com.dsi.system.repositorieslib.*" } ) общественный класс H2DataSourceConfiguration { частный окончательный JpaProperties jpaProperties; @Бин @ConfigurationProperties("spring.h2.datasource.cheque") public DataSourceProperties h2PrimaryDataSourceProperties() { вернуть новые свойства источника данных(); } @Bean(name = "h2PrimaryDataSource") общедоступный источник данных dataSource() { Mode.getInstance("ORACLE").numericWithBooleanComparison = true; вернуть h2PrimaryDataSourceProperties() .initializeDataSourceBuilder() .строить(); } @Bean(name = "h2EntityManagerFactory") public LocalContainerEntityManagerFactoryBean h2EntityManagerFactory() { HibernateJpaVendorAdaptervendorAdapter = новый HibernateJpaVendorAdapter(); HashMap свойства = jpaProperties.getJPAProperties("образец"); LocalContainerEntityManagerFactoryBean em = новый LocalContainerEntityManagerFactoryBean (); em.setDataSource(this.dataSource()); em.setPackagesToScan( "com.dsi.system.core.entities", "com.dsi.system.core.sign.entity", "com.dsi.system.baseinfo.entities" ); em.setPersistenceUnitName("образец"); em.setJpaVendorAdapter(vendorAdapter); em.setJpaPropertyMap(свойства); вернуть их; } @Bean(name = "h2TransactionManager") общедоступный PlatformTransactionManager h2TransactionManager( окончательный @Qualifier("h2EntityManagerFactory") LocalContainerEntityManagerFactoryBean h2EntityManagerFactory) { JpaTransactionManagertransactionManager = новый JpaTransactionManager(); транзакцииManager.setEntityManagerFactory(h2EntityManagerFactory.getObject()); вернуть менеджер транзакции; } } после запуска теста я получаю следующее BeanDefinitionOverrideException:

org.springframework.beans.factory.support.BeanDefinitionOverrideException: неверное определение bean-компонента с именем batchRevokeRepository, определенным в com.dsi.system.repositorieslib.revoke.BatchRevokeRepository, определенном в @EnableJpaRepositories, объявленном в ChequeDataSourceConfiguration: невозможно зарегистрировать bean-компонент определение [Корневой компонент: класс [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean]; область действия =; абстрактное = ложь; lazyInit = ложь; автопроводной режим = 0; зависимостьПроверка=0; autowireCandidate = истина; первичный = ложь; FactoryBeanName = ноль; FactoryMethodName = ноль; initMethodNames = нуль; уничтожитьMethodNames = ноль; определено в com.dsi.system.repositorieslib.revoke.BatchRevokeRepository, определенном в @EnableJpaRepositories, объявленном в ChequeDataSourceConfiguration] для bean-компонента 'batchRevokeRepository', поскольку уже существует [Корневой bean-компонент: класс [org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean] ; область действия =; абстрактное = ложь; lazyInit = ложь; автопроводной режим = 0; зависимостьПроверка=0; autowireCandidate = истина; первичный = ложь; FactoryBeanName = ноль; FactoryMethodName = ноль; initMethodNames = нуль; уничтожитьMethodNames = ноль; определено в com.dsi.system.repositorieslib.revoke.BatchRevokeRepository, определенном в @EnableJpaRepositories, объявленном в привязке H2ChequeDataSourceConfiguration]. в org.springframework.beans.factory.support.DefaultListableBeanFactory.registerBeanDefinition(DefaultListableBeanFactory.java:1015) в org.springframework.data.repository.config.RepositoryConfigurationDelegate.registerRepositoriesIn(RepositoryConfigurationDelegate.java:197) в org.springframework.data.repository.config.RepositoryBeanDefinitionRegistrarSupport.registerBeanDefinitions(RepositoryBeanDefinitionRegistrarSupport.java:94) в org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:373) в java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) в org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:372) в org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148) в org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120) в org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:427) в org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:287) в org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:344) в org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:115) в org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:771) в org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:589) в org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) в org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:436) в org.springframework.boot.SpringApplication.run(SpringApplication.java:312) в org.springframework.boot.test.context.SpringBootContextLoader.lambda$loadContext$3(SpringBootContextLoader.java:137) в org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:58) в org.springframework.util.function.ThrowingSupplier.get(ThrowingSupplier.java:46) в org.springframework.boot.SpringApplication.withHook(SpringApplication.java:1406) в org.springframework.boot.test.context.SpringBootContextLoader$ContextLoaderHook.run(SpringBootContextLoader.java:545) в org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:137) в org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:108) в org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:187) в org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:119) ... еще 72 если я отключу OracleDataSourceConfiguration в своем коде, тест запустится успешно. возможно, мне следует отключить это при запуске теста, но я не могу этого сделать и не уверен, что этот способ правильный. может ли кто-нибудь помочь мне это исправить?

спасибо :)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»