Хорошо, поэтому в моем случае я использую <springversion>4.2.5.RELEASE</springversion>
, и в репозитории maven четко сказано, что если я использую spring-boot-jdbc-2.1.5
, мне нужно использовать хотя бы версию Springframework 5.1.7.RELEASE mvn_link_here .Возможно, я пропустил это, мой плохой.
Если кто-то использует только Spring, вы должны использовать SimpleDriverDataSource
, который является частью org.springframework.jdbc.datasource
, и, используя его, вы можете указать URL, драйвер, имя пользователя и пароль.
Примеров не так много, поэтому способ, которым я достиг этого, и он работает, выглядит следующим образом:
@Configuration
@PropertySource("classpath:properties.file")
public class DatabaseServiceImplTestConfig {
@Autowired
private Environment env;
@Bean
public DataSourceFactory embeddedDataSourceFactory() {
return new DataSourceFactory() {
@Override
public ConnectionProperties getConnectionProperties() {
return new ConnectionProperties() {
@Override
public void setUsername(String username) {}
@Override
public void setPassword(String password) {}
@Override
public void setUrl(String url) {}
@Override
public void setDriverClass(Class<? extends Driver> driverClass) {}
};
}
@Override
public DataSource getDataSource() {
SimpleDriverDataSource sds = new SimpleDriverDataSource();
sds.setDriverClass(com.mysql.jdbc.Driver.class); // <- try to return Driver object too (using setDriver)
sds.setUrl(env.getProperty("jdbc.connection.url"));
sds.setUsername(env.getProperty("jdbc.connection.username"));
sds.setPassword(env.getProperty("jdbc.connection.password"));
return sds;
}
};
}
@Bean
public DataSource embeddedDataSource(DataSourceFactory embeddedDataSourceFactory) {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.setName("table_name_here")
.setScriptEncoding("UTF-8")
.addScript("classpath:path/to/your/shema.sql")
.setDataSourceFactory(embeddedDataSourceFactory) // <- call the bean here
.build();
}