У меня мало опыта с автоконфигурацией 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. Это все еще работает, но с какой практикой лучше иметь дело? Есть ли руководство, чтобы понять магию аннотаций?