Я работаю в проекте Spring 5 (Not Sprig Boot). Мне нужно протестировать свое приложение с базой данных H2 в памяти. Я использую Spring с Java Config в инструменте сборки maven. Есть ли способ настроить H2 DB в памяти?
Обычно я использую это в своем классе @Config:
@Bean
public DataSource h2TestDataSource(){
return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
}
Поэтому я использую Spring Embedded DB в своих весенних проектах (я не использую весеннюю загрузку)
Надеюсь, это будет полезно.
Вы можете добавить bean-компонент DataSource с помощью EmbeddedDatabaseBuilder следующим образом:
@Bean
public DataSource dataSource(
@Value("${datasource.dbname}") String dbname,
@Value("${datasource.script}") String script) {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.setName(dbname)
.addScript(script)
.build();
}
application.properties
datasource.dbname=users
datasource.script=classpath:resources/users.sql
Также вы можете зарегистрировать сервлет h2-console в классе конфигурации приложения следующим образом:
@Configuration
public class WebAppConfig implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) {
. . .
servletContext
.addServlet("H2Console", WebServlet.class)
.addMapping("/console/*");
. . .
}
}
Затем вы можете открыть http://localhost:8080/console и подключиться к базе данных jdbc:h2:mem:users следующим образом:
See also How to enable h2-console in spring-webmvc without spring-boot?