Класс конфигурации Spring Boot и свойства во время теста - PullRequest
0 голосов
/ 12 ноября 2018

У меня мало опыта с автоконфигурацией Spring Boot. Какова лучшая практика работы с конфигурацией базы данных для производства и тестирования.

В настоящее время у меня есть конфигурация для производства, которая считывает свойства базы данных из файла свойств. В чем разница или какова конфигурация для менеджера сущностей. Я не создаю компонент, а только указываю пары ключ-значение в файле.

Однако для теста мне нужно создать bean-компоненты, в противном случае приходит сообщение:

Вызывается: org.springframework.beans.factory.NoSuchBeanDefinitionException: недоступен компонент с именем entityManagerFactory

В настоящее время мой тестовый класс выглядит следующим образом:

@RunWith(SpringRunner.class)
@ContextConfiguration(locations = { "classpath:test-context.xml" })
@AutoConfigureTestDatabase(connection = EmbeddedDatabaseConnection.H2)
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = "de.xxx.xxx", repositoryBaseClass = 
                                                ExtendedRepositoryImpl.class)
@EntityScan(basePackages = { "de.xxx.xxx" })
@ComponentScan(basePackages = { "de.xxx.xxx" })
@EnableJpaAuditing
@ActiveProfiles(profiles = { "test" })
public abstract class AbstractTestCase {

protected static final Log LOG = LogFactory.getLog(AbstractTestCase.class);
}

Так что лучше всего иметь дело с конфигурацией. В Java в пределах @Configuration или в файле свойств? Когда я должен использовать что-то?

ОБНОВЛЕНИЕ 1: Я добавил аннотацию @DataJpaTest и удалил @ Bean из класса @Configuration. Это все еще работает, но с какой практикой лучше иметь дело? Есть ли руководство, чтобы понять магию аннотаций?

1 Ответ

0 голосов
/ 13 ноября 2018

Рекомендуется, чтобы Spring Boot конфигурировал компоненты с использованием свойств приложения в файле application.properties https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#common-application-properties.

Вы можете использовать отдельную конфигурацию, используя отдельные файлы application.properties в resources/application.properties и test/resources/application.properties.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...