我对Spring Boot的自动配置经验很少。处理生产和测试的数据库配置的最佳实践是什么。
当前,我有一个用于生产的配置,该配置从属性文件读取数据库属性。实体管理器有什么区别或配置是什么。我不创建bean,而仅在文件中指定键值对。
但是,对于测试,我必须创建bean,否则消息将出现:
原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有名为'entityManagerFactory'的bean
目前,我的测试课程如下:
@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批注,并从@Configuration类中删除了@Bean。它仍然有效,但是最好的处理方法是什么?是否有指南来了解注释的神奇之处?
答案 0 :(得分:0)
最佳实践是让Spring Boot使用application.properties
文件https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html#common-application-properties中的应用程序属性来配置bean。
您可以通过在application.properties
和resources/application.properties
中使用单独的test/resources/application.properties
文件来使用单独的配置。