У меня мало опыта автоконфигурации Spring Boot. Как лучше всего работать с конфигурацией базы данных для производства и тестирования.
В настоящее время у меня есть конфигурация для производства, которая считывает свойства базы данных из файла свойств. В чем разница или какая конфигурация у менеджера сущностей. Я не создаю bean-компонент, а только указываю пары ключ-значение в файле.
Однако для теста мне нужно создать bean-компоненты, иначе появится сообщение:
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
В настоящее время мой тестовый класс выглядит следующим образом:
@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. Это все еще работает, но с чем лучше всего иметь дело? Есть ли руководство, чтобы понять магию аннотаций?
Спасибо, но я почти прочитал это. Моя проблема в том, чтобы понять, что лучше всего. Свойство и аннотация или класс конфигурации. Еще у меня возникла проблема с объединением DataJpaTest и SpringBootTest. В лучшем случае иметь класс H2TestConfig и правильную конфигурацию. В Google есть много сообщений о разной конфигурации. Теперь я немного запутался.
SpringBootTest = полный стек, DataJpaTest = только постоянство, WebMvcTest = веб-слой. Поэтому нет смысла комбинировать DataJpaTest с SpringBootTest. Одна из особенностей Spring Boot заключается в том, что с помощью свойств он настраивает bean-компоненты за вас. Использовать другую конфигурацию для теста и производства так же просто, как создавать отдельные файлы /resources/application.properties/test/resources/application.properties. См. docs.spring.io/spring-boot/docs/current/reference/html/…
Спасибо, это то, что я ищу




Лучше всего позволить Spring Boot настраивать bean-компоненты, используя свойства приложения в файле application.propertieshttps://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.
Документация может помочь вам понять магию аннотаций docs.spring.io/spring-boot/docs/current/reference/html/…, в частности docs.spring.io/spring-boot/docs/current/reference/html/…