Отключить автоконфигурирование источника производственных данных в Spring DataJpaTest - PullRequest
0 голосов
/ 02 июня 2018

В моем application.yml у меня есть следующая конфигурация (чтобы иметь возможность настраивать переменные в другой среде с помощью docker / docker-compose):

spring:
  datasource:
    url: ${SPRING_DATASOURCE_URL}
    username: ${SPRING_DATASOURCE_USERNAME}
    password: ${SPRING_DATASOURCE_PASSWORD}

Проблема в том, что Spring пытается автоматически настроить эту конфигурациюисточник данных, пока я нахожусь в @DataJpaTest, поэтому со встроенной базой данных H2, и, очевидно, он не любит заполнители ....

Я попытался исключить некоторую автоконфигурацию:

@DataJpaTest(excludeAutoConfiguration = 
               {DataSourceAutoConfiguration.class, 
                DataSourceTransactionManagerAutoConfiguration.class, 
                HibernateJpaAutoConfiguration.class})

Но тогда, ничего не работает, entityManagerFactory отсутствует, ...

Возможно, я мог бы использовать профили, но если возможно, я бы предпочел другое решение.

1 Ответ

0 голосов
/ 02 июня 2018

Вы пытались определить свой собственный компонент источника данных?

@Import(JpaTestConfiguration.class)
@DataJpaTest

@Configuration
public class JpaTestConfiguration{
//...
@Bean
public DataSource dataSource() {
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("org.h2.Driver");
        dataSource.setUrl("jdbc:h2:mem:db;DB_CLOSE_DELAY=-1");
        dataSource.setUsername("sa");
        dataSource.setPassword("");
        return dataSource;
    }
//...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...